sql-与相关子查询混淆

sql-与相关子查询混淆,sql,subquery,Sql,Subquery,我一直在使用前面一个关于子查询的问题中给我的建议。请看这里: 我正在使用ms sql server(我相信是2005年) 我现在要做的是: 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 我有一个行的结果(称为结果a),它是通过执行以下操作获得的: select * from TableA as a join

我一直在使用前面一个关于子查询的问题中给我的建议。请看这里:

我正在使用ms sql server(我相信是2005年)

我现在要做的是:

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
我有一个行的结果(称为结果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);

要设置差异,请执行以下操作:

select a.* from TableA as a
join TableC as c
on c.id = a.id

except

select a.* 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 a.* from TableA as a
join TableC as c
on c.id = a.id

except

select a.* 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
但“不存在”具有不同的子查询。此外,某些错误可能是由于多次使用同一别名造成的


最后,彼得的方法应该奏效。我没有检查详细信息。

您的叙述说您想从以下内容中排除结果:

select * from TableA as a
join TableC as c
on c.id = a.id
但“不存在”具有不同的子查询。此外,某些错误可能是由于多次使用同一别名造成的

最后,彼得的方法应该奏效。我没有检查细节