求助:查询table1中未出现在table2的5条数据的SQL语句
查询table1中比table2多出的记录
你的SQL问题所在
你写的SQL逻辑完全搞反了:
- 目标是找
table1里多出来的记录,你却从table2里查数据 - 子查询里的
JOIN会把匹配的记录都筛出来,导致NOT EXISTS的判断根本起不到作用
正确的查询语句
下面几种方法都能帮你拿到table1中存在、但table2里没有对应email的记录:
方法一:用NOT EXISTS(兼容性最好)
SELECT * FROM table1 t1 WHERE NOT EXISTS ( SELECT 1 FROM table2 t2 WHERE t2.email = t1.email );
方法二:用LEFT JOIN + IS NULL
SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.email = t2.email WHERE t2.email IS NULL;
方法三:用EXCEPT(仅支持PostgreSQL、SQL Server等数据库)
SELECT email FROM table1 EXCEPT SELECT email FROM table2;
如果只是想确认多出的记录数量,把SELECT *换成SELECT COUNT(*)即可。
内容的提问来源于stack exchange,提问作者Abhishek Chatterjee
相关产品推荐
相关产品推荐

