A、B两表,找出id字段中,存在A表,但是不存在B表的数据。
三种方法:
1、not in
SELECT DISTINCT a.id FROM a WHERE a.ID NOT IN (SELECT id FROM b)
2、left join (表示左连接后,B表的id字段为null的记录。)
select A.ID from A left join B on A.ID=B.ID where B.ID is null
3.count(1)
SELECT * FROM a
WHERE (SELECT COUNT(1) FROM b WHERE A.ID = B.ID) = 0;
方法3的意思是,根据id遍历a表,若a表存在,同时b表也存在的id,即a.id = b.id。此时SELECT COUNT(1) FROM b WHERE A.ID = B.ID ,count(1)为1,1 0。除了a,b中id相等。剩下所有情况count(1)都为0 , WHERE (SELECT COUNT(1) FROM b WHERE A.ID = B.ID) = 0; 就为true. 对a 中的取值就没限制。