繁体   English   中英

SQL返回1个表中的所有ID,仅返回另一个中不匹配的ID

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM