查询不到数据说明表A中所有的ID在表B中都有。
不是的
@sofootball: 你这条SQL查询的是表A,怎么可能查询出表B的数据来呢?
not exists 里面的子查询改成 SELECT ID FROM A inner join B where A .ID =B .ID 试试呢
你是要查在A表但不在B表的数据吗?
最简单的可以用这句 SELECT ID FROM A WHERE ID no in (SELECT ID FROM B) 这句不会错,如果怀疑你自己写的有问题可以和这句的结果对比。
还可以用这句 SELECT A.ID FROM A left join B on (A .ID =B .ID) WHERE B.ID is null
SELECT ID
FROM A WHERE not exists (SELECT ID FROM B where A .ID =B .ID )
先看下where后面的 not exists 这个代表
当exists返回false 时 not exists 为true
当exists返回true时not exists为false 可以查询所有A表中有B表中没有的数据
使用左外链接查询所有A表中有但B表中没有的数据
select ID from A left join B on A.key=B.key where B.key is null
使用全外链接查询所有A中有但B中没有和A表中没有但B表中有的数据
select ID from A full join B on A.key=B.key where A.key is null or B.key is null
你的sql语句是要在A表中通过ID查询出不在B表的记录,查询不出结果时说明A的ID在B中全部存在,如果你是要查询B不存在于A的记录,A表和B表换个位置就好了