EXISTS和 NOT EXISTS讲解和案例
Posted 北月南辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXISTS和 NOT EXISTS讲解和案例相关的知识,希望对你有一定的参考价值。
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讲解和案例的主要内容,如果未能解决你的问题,请参考以下文章