Jul 21

SQL关于IN和EXISTS的区别

admin , 13:36 , 数据库 » 数据库(Oracle基础) , 评论(0) , 引用(0) , 阅读(2909) , Via 本站原创 | |
搜索
我已经获得阿里云幸运券,准备分享给您。请点击获取  

IN
确定给定的值是否与子查询或列表中的值相匹配。

EXISTS
指定一个子查询,检测行的存在。

比较使用 EXISTS 和 IN 的查询

exists()后面的子查询被称做相关子查询   他是不返回列表的值的.只是返回一个ture或false的结果,其运行方式是先运行主查询一次   再去子查询里查询与其对应的结果   如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询.  
   
  in()后面的子查询   是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.