语句如下:
Declare @msi varchar(20)
Set @msi = '12345'
exec
(
'select max(distance) from F_sites_distance
where
site1 in
(select siteno from F_sites_info_xy
where
cellid1 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid2 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid3 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid4 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid5 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid6 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid7 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid8 in (select cellid from T_UM0301_full where msi = ' + @msi + ')
)因为表T_UM0301_full比较大,如果每次查询都需要查询T_UM0301_full表8次,比较费时间,有什么好的方法查询一遍后将结果保存后可以直接使用么?谢谢。在线等。
Declare @msi varchar(20)
Set @msi = '12345'
exec
(
'select max(distance) from F_sites_distance
where
site1 in
(select siteno from F_sites_info_xy
where
cellid1 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid2 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid3 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid4 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid5 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid6 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid7 in (select cellid from T_UM0301_full where msi = ' + @msi + ') or
cellid8 in (select cellid from T_UM0301_full where msi = ' + @msi + ')
)因为表T_UM0301_full比较大,如果每次查询都需要查询T_UM0301_full表8次,比较费时间,有什么好的方法查询一遍后将结果保存后可以直接使用么?谢谢。在线等。
Set @msi = '12345'
exec
(
'select max(distance) from F_sites_distance
where
site1 in
(select siteno,(cellid1+cellid2+cellid3+cellid4+cellid5+cellid6+cellid7+cellid8) as cellid from F_sites_info_xy
where cellid like '%@msi %'
)??
cellid1+cellid2+cellid3+cellid4+cellid5+cellid6+cellid7+cellid8
会有错误 不行啊
TO : dulei115()
如果 有这样的数据
b.cellid1 是 '/'
c.cellid 是 ''
会不会有问题?
from F_sites_distance
where site1 in
(select siteno
from F_sites_info_xy a ,
(select cellid from T_UM0301_full where msi = '12345') b
where
a.cellid1 = b.cellid or
a.cellid2 = b.cellid or
a.cellid3 = b.cellid or
a.cellid4 = b.cellid or
a.cellid5 = b.cellid or
a.cellid6 = b.cellid or
a.cellid7 = b.cellid or
a.cellid8 = b.cellid
(
这个思路好像比较好,我试一试
'
select max(distance)
from F_sites_distance
join F_sites_info_xy on site1=siteno
join T_UM0301_full on COALESCE(nullif(cellid1,'+@msi+'),cellid2,'+@msi+'),cellid3,'+@msi+'),
cellid4,'+@msi+'),cellid5,'+@msi+'),cellid6,'+@msi+'),cellid7,'+@msi+'),cellid8,'+@msi+'),0) is null
'