我一直在使用早先关于子查询的问题中给我的建议。看这里:
我正在使用 ms sql 服务器(我相信是 2005 年)。
我现在要做的是:
我有一个行结果(称为结果 A),它是通过执行以下操作获得的:
select * from TableA as a
join (select * from TableB where RealDate = '4/20/2013 12:00:00 AM') as b
on a.id = b.id
在此结果中,我想查找不在此查询返回的行的结果中的所有行:
select * from TableA as a
join TableC as c
on c.id = a.id
本质上,我遇到的情况是第一个查询产生 246 条记录,而第二个查询产生 247 条记录。我期待第一个结果返回 247 条记录(所有这些都应该在第二个查询返回的记录列表中)。所以现在我需要调查缺少哪条记录,以便采取适当的措施。
我尝试执行以下操作,但收到各种错误:
select * from (select * from TableA as a
join (select * from TableB where RealDate = '4/20/2013 12:00:00 AM') as b
on a.ul_id = b.id))
as result_A
where not exists (select 1 from (select * from TableA as a
join TableC as c
on c.id = a.ul_id) as result_B
where result_A.ul_id = result_B.id);