not exists查询问题
时间: 2019-03-27来源:博客园
前景提要
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条数据,求解 sql 数据库 sofootball | 初学一级 | 园豆: 44
提问于:2019-03-27 10:45 显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
< > 分享
分享您的问题
所有回答(5) 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 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 not exists 里面的子查询改成 SELECT ID FROM A inner join B where A .ID =B .ID 试试呢 默卿 | 园豆:4551 (老鸟四级) | 2019-03-27 11:34 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 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 | 园豆:436 (菜鸟二级) | 2019-03-28 10:05 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 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 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 你的sql语句是要在A表中通过ID查询出不在B表的记录,查询不出结果时说明A的ID在B中全部存在,如果你是要查询B不存在于A的记录,A表和B表换个位置就好了 Script丶 | 园豆:170 (初学一级) | 2020-07-21 11:40 编辑文本 预览 上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要 登录 以后才能回答,未注册用户请先 注册 。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行