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