SQL返回1个表中的所有id,只返回与另一个表不匹配的id

时间:2010-08-20 16:39:57

标签: sql sql-server sql-server-2005

我有2个表:#tmptable1#tmptable2。这些表具有唯一标识每条记录的ID。

我想返回表1中的所有记录,但我只想返回表2中不在表1中的记录

我希望在1次查询中完成此操作。

谢谢!

4 个答案:

答案 0 :(得分:3)

SELECT * FROM '#tmptable1' 
UNION ALL
SELECT * FROM  '#tmptable2' WHERE 
    ID NOT IN (SELECT ID FROM #tmptable1 WHERE ID IS NOT NULL)

答案 1 :(得分:3)

如果两个表的所有其他字段和数据相同,则可以执行此操作:

SELECT * FROM #tmptable1
UNION
SELECT * FROM #tmptable2

没有的UNION ALL修饰符会删除重复项。

答案 2 :(得分:1)

我不太明白你想要在结果中得到什么,但UNION选择不同的值,所以你不会有重复的值(来自#tmptable2的值已经存在于#tmptable1中)。

SELECT * FROM #tmptable1
UNION
SELECT * FROM #tmptable2

无论如何,这些记录是#tmptable2中不在#tmptable1中的记录。

SELECT * FROM #tmptable2
EXCEPT
SELECT * FROM #tmptable1

答案 3 :(得分:0)

SELECT ID FROM #tmptable1
UNION
SELECT ID FROM #tmptable2

UNION运算符会自动删除重复项。