在做项目的时候遇到一个问题:我需要查询A表存在而B表不存在的数据。第一想法便是使用not in,当时的sql是这样的
select * from A where Id not in (select Id from B)
看着简单,但查询的结果为空,瞬间头大,第一想法就是What happened?
接着在网上查了一下关于not in语法,想具体了解的话大家可以看一下这位大佬的文章
(6条消息) SQLServer中NOT IN语句的使用隐患_不大好不大好的博客-CSDN博客
大致意思就是数据中有null值,查询不到数据,同时大佬也给了解决的方案
SELECT id FROM A WHERE NOT EXISTS(
SELECT * FROM B WHERE A.ID=B.ID )
另外分享一下我自己的解决方法
select * from A where (select count(1) as num from B where A.id = B.id) = 0