首页新闻找找看学习计划

not exists查询问题

0
悬赏园豆:20 [待解决问题]

SELECT ID
FROM A WHERE not exists (SELECT ID FROM B where A .ID =B .ID )
当B(60000条)表数据大于A(10000条)表数据时,查询不到所有不存在的数据,应该是只查询了B表条件中的10000条数据,求解

sofootball的主页 sofootball | 初学一级 | 园豆:44
提问于:2019-03-27 10:45
< >
分享
所有回答(4)
0

查询不到数据说明表A中所有的ID在表B中都有。

_天光云影 | 园豆:70 (初学一级) | 2019-03-27 11:11

不是的

支持(0) 反对(0) sofootball | 园豆:44 (初学一级) | 2019-03-27 11:16

@sofootball: 你这条SQL查询的是表A,怎么可能查询出表B的数据来呢?

支持(0) 反对(0) _天光云影 | 园豆:70 (初学一级) | 2019-03-27 14:01
0

not exists 里面的子查询改成 SELECT ID FROM A inner join B where A .ID =B .ID 试试呢

默卿 | 园豆:3931 (老鸟四级) | 2019-03-27 11:34
0

你是要查在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 

AYard | 园豆:431 (菜鸟二级) | 2019-03-28 10:05
0

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

一世红尘 | 园豆:321 (菜鸟二级) | 2019-04-03 21:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册