[英]SQL return all id's from 1 table and only ones that don't match from another
我有2个表: #tmptable1
和#tmptable2
。 这些表具有一个ID,用于唯一标识每个记录。
我想返回表1中的所有记录,但是我只想返回表2中没有的表2中的记录
我希望在1个查询中完成此操作。
谢谢!
SELECT * FROM '#tmptable1'
UNION ALL
SELECT * FROM '#tmptable2' WHERE
ID NOT IN (SELECT ID FROM #tmptable1 WHERE ID IS NOT NULL)
如果两个表的所有其他字段和数据相同,则可以执行以下操作:
SELECT * FROM #tmptable1
UNION
SELECT * FROM #tmptable2
没有 ALL修饰符的UNION将删除重复项。
我不太了解要在结果中得到什么,但是UNION
选择了不同的值,因此您不会有重复的值(#tmptable1中已经存在的#tmptable2中的值)。
SELECT * FROM #tmptable1
UNION
SELECT * FROM #tmptable2
无论如何,这些记录是#tmptable2中的记录,不在#tmptable1中。
SELECT * FROM #tmptable2
EXCEPT
SELECT * FROM #tmptable1
SELECT ID FROM #tmptable1
UNION
SELECT ID FROM #tmptable2
UNION
运算符将自动删除重复项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.