码迷,mamicode.com
首页 > 其他好文 > 详细

EXISTS和 NOT EXISTS讲解和案例

时间:2018-05-19 16:53:48      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:字段   代号   一个   16px   就是   select   sele   条件   ror   

EXISTS或者NOT EXISTS是把主查询的字段传到后边的查询中作为条件,返回值是TRUE或者FALSE。EXISTS TRUE,那么就是查询条件成立,结果会显示出来。NOT EXISTS TRUE,则为FALSE,查询连接条件不成立。
select * from course where not exists(select * from grade where grade.课程代号=course.课程代号)
这个语句,是查询course表中课程代号在grade中没有出现的数据。
看看grade表,课程编号有K01到K06,而COURSE表,有K01到K07,那么K07在GRADE表是不存在的,那么,是符合条件的。
同样select * from course where exists(select * from grade where grade.课程代号=course.课程代号)
则是查询COURSE的记录条件为编号在GRADE中存在。那么很明显,结果是K01到K06的数据。
另外,EXISTS和NOT EXISTS的作用可以用IN或NOT IN实现,但是,效率要高。
因为EXISTS和NOT EXISTS返回的结果是TRUE或者FALSE,那么则在子查询中,遇到第一个符合条件的结果,就会退出查询,而不会进行全表的检索。而NOT IN或者IN,要把子查询中的SELECT字句全部查询出来才行。

实例:$sql = "INSERT INTO info(batch,order_no,error_info) SELECT ‘".$order_id."‘,‘".$order_no."‘,‘".$Note."‘ FROM DUlSDFAL WHERE NOT EXISTS(SELECT batno FROM error_info WHERE batno=‘".$order_id."‘)";

EXISTS和 NOT EXISTS讲解和案例

标签:字段   代号   一个   16px   就是   select   sele   条件   ror   

原文地址:https://www.cnblogs.com/supermanxu/p/9060541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!