0

我有两张桌子。一个有 102845 条记录,另一个有 98496 条记录。我需要找到出现在较大表中但不在较小表(4349)中的记录。这些是我创建数字的方式:

--98496

drop table #test2
select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12 
into #test2
from #test4 b
join pcd a on  (a.ACCOUNT_NUMBER = B.account_number)

--102845

drop table #test1
select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12,
into #test1
from #test4 b 
left join pcd a on  (a.ACCOUNT_NUMBER = B.account_number)

谢谢

4

2 回答 2

1
select * from #test1
except
select * from #test2

当然,这里假设#test2 中的所有记录都在#test1 中

如果要检查反向,只需反向查询。

select * from #test2
except
select * from #test1
于 2012-10-16T10:41:32.310 回答
0

显然,您的第一个查询仅从两个表中获取匹配的行。第二个获取所有行,b同时从匹配的地方提取数据a,如果没有匹配,则a用 NULL 填充列。

现在,两个结果集之间的差异实际上是b. 要获取这些行,您可以将第二个查询与 NULL 检查一起使用,如下所示:

select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12,
from #test4 b 
left join pcd a on  (a.ACCOUNT_NUMBER = B.account_number)
where a.ACCOUNT_NUMBER is null

即不需要#test1or #test2,直接查询不匹配的行即可。

于 2012-10-17T15:25:48.103 回答