SQL关于IN和EXISTS的区别?
答案:5 悬赏:10 手机版
解决时间 2021-02-09 03:11
- 提问者网友:绫月
- 2021-02-08 11:17
SQL关于IN和EXISTS的区别?
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-02-08 12:47
in 是把外表和内表作hash 连接
exists是对外表作loop循环,每次loop循环再对内表进行查询。
那些认为exists比in效率高的人,是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
exists是对外表作loop循环,每次loop循环再对内表进行查询。
那些认为exists比in效率高的人,是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
全部回答
- 1楼网友:青灯有味
- 2021-02-08 16:00
MD001有空值
试试如下
select MC001 from BOMMC WHERe MC001 NOT EXISTS (SELECt MD001 FROM BOMMD AND MD001 IS NOT NULL)
试试如下
select MC001 from BOMMC WHERe MC001 NOT EXISTS (SELECt MD001 FROM BOMMD AND MD001 IS NOT NULL)
- 2楼网友:詩光轨車
- 2021-02-08 15:32
in 的对象是值
exists 不返回值,只验证
exists 不返回值,只验证
- 3楼网友:时间的尘埃
- 2021-02-08 14:38
IN
确定给定的值是否与子查询或列表中的值相匹配。
EXISTS
指定一个子查询,检测行的存在。
比较使用 EXISTS 和 IN 的查询
exists()后面的子查询被称做相关子查询 他是不返回列表的值的.只是返回一个ture或false的结果,其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询.
in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
确定给定的值是否与子查询或列表中的值相匹配。
EXISTS
指定一个子查询,检测行的存在。
比较使用 EXISTS 和 IN 的查询
exists()后面的子查询被称做相关子查询 他是不返回列表的值的.只是返回一个ture或false的结果,其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询.
in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
- 4楼网友:空山清雨
- 2021-02-08 14:06
IN 其实与等于相似,比如in(1,2) 就是 = 1 or = 2的一种简单写法,所以一般在元素少的时候使用IN,如果多的话就用exists
exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度。
你的SQL语句用NOT EXISTS可以写成
select MC001 from BOMMC WHERe NOT EXISTS (SELECt MD001 FROM BOMMD where BOMMC.MC001 = BOMMD.MD001)
exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度。
你的SQL语句用NOT EXISTS可以写成
select MC001 from BOMMC WHERe NOT EXISTS (SELECt MD001 FROM BOMMD where BOMMC.MC001 = BOMMD.MD001)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯