select c.id,cname,area,levels,c.site,c.uid,work_no,visitrec,qm,nexttimegj,d.addtime
from zs_khinfo c,zs_gzrec d
where
c.id in (select fid from zs_khinfo a,zs_gzrec b where b.fid=a.id and datediff(day,nexttimegj,getdate())=0
and levels <> 'O ') and c.id=d.fid order by d.addtime desc
问题如下:
select fid from zs_khinfo a,zs_gzrec b where b.fid=a.id and datediff(day,nexttimegj,getdate())=0
and levels <> 'O '得到的值有188条
而整个语句执行出来有1000多条,我只需要id in 188条里的ID,怎么会得到1000多条
我要实现的整个功能,就是提取表a和b的数据,以表a的id和表b的fid关联,表b是子表,fid会有重复,我要提取今天需要跟踪的记录(只要最新的一条),day,nexttimegj,getdate())=0来实现,但是我需要显示表a所对应的表b的fid的最新的记录,如果我用 "select 所有提取的所有字段 from zs_khinfo a,zs_gzrec b where b.fid=a.id and datediff(day,nexttimegj,getdate())=0 and levels <> 'O ' order by b.addtime desc "这条语句来实现,只能满足是今天需要跟踪的记录,但显示的记录不会是最新的,比如如果今天我填的信息,跟踪时间填的分明有今天,后天,大后天,它只会显示今天,而不是大后天,如果我用datediff(day,nexttimegj,getdate()) <0可以得到最新的信息,但是没有满足必须是今天需要跟踪的记录,这条SQL语句我该怎么写!!
------解决方案--------------------
你的語句可以這麼改,不需要使用子查詢
select c.id,cname,area,levels,c.site,c.uid,work_no,visitrec,qm,nexttimegj,d.addtime
from zs_khinfo c,zs_gzrec d
where datediff(day,nexttimegj,getdate())=0 and levels <> 'O ' and c.id=d.fid order by d.addtime desc
但是你下面的文字有點沒看明白。
------解决方案--------------------
把你的数据和查询后的结果贴上来,才能清楚。