永发信息网

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差别不大。
全部回答
  • 1楼网友:青灯有味
  • 2021-02-08 16:00
MD001有空值
试试如下
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 不返回值,只验证
  • 3楼网友:时间的尘埃
  • 2021-02-08 14:38
IN
确定给定的值是否与子查询或列表中的值相匹配。
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)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯