Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我有两个表,只查找不匹配的id_Sql - Fatal编程技术网

Sql 我有两个表,只查找不匹配的id

Sql 我有两个表,只查找不匹配的id,sql,Sql,表1: id 1 2 3 5 6 表2: id 2 3 7 我只需要表1中的不匹配id,就像我的结果应该是1,5,6 请在这方面提供帮助,提前谢谢。您可以使用不在 select id from table1 where id not in (select id from table2) 试试这个: SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2) 这应该适用于mysql: SELECT id FROM table1

表1:

id
1
2
3
5
6
表2:

id
2
3
7
我只需要表1中的不匹配
id
,就像我的结果应该是
1,5,6


请在这方面提供帮助,提前谢谢。

您可以使用
不在

select id from table1 where id not in (select id from table2)
试试这个:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2)

这应该适用于mysql:

SELECT id FROM table1 LEFT JOIN table2 ON table1.id = table2.id WHERE NOT ISNULL(table2.id)
在mssql上,您可以使用
table2.id不为NULL
而不是
notisnull(table2.id)
构造

SELECT ID1 

FROM TABLE_1

WHERE ID1 NOT IN(SELECT ID2 FROM TABLE_2);

您只需在
WHERE
条件中使用
NOT IN
子句,它将返回与
表1

中匹配的唯一id。查询应为
NOT IN
且NOT
NOT id IN
我以前从未尝试过此操作。就我个人而言,我觉得查询的可读性降低了。你完全正确,它提高了可读性,我不知道为什么我总是用另一种方式…你应该只使用
而不使用
子查询。请查看我的答案,并询问是否需要进一步澄清。始终使用NOT EXISTS而不是NOT IN是一个好主意,因为NOT EXISTS是“空安全的”。ISNULL是特定于产品的,并且问题没有指定dbms。至少指定哪个是空的。很好,我编辑了答案来描述dbms,谢谢。