假设有两个数据表A和B,
A表如下
| id | name |
| 1 | Bob |
| 3 | Tom |
| 4 | July |
| 5 | Lily |
B表如下
| id | age |
| 2 | 20 |
| 3 | 50 |
| 4 | 33 |
| 6 | 35 |
方法一
select * from A where id not in (select id from B);
方法二
select * from A where (select count(1) from B where B.id=A.id)=0;
两种方法的结果都是如下
| id | name |
| 1 | Bob |
| 5 | Lily |
但是方法二要比方法一快很多,所以推荐方法二。
本文探讨了在SQL中查找不在另一表中记录的两种方法:方法一是使用NOT IN子句,方法二是利用子查询计算匹配记录的数量。虽然两者都能得到相同的结果,但方法二通常执行更快,因为它避免了全表扫描。文章建议在类似场景下优先考虑使用方法二进行查询优化。

被折叠的 条评论
为什么被折叠?



