EXISTS 的中文意思为“存在”,所以可以大胆猜测这个单词在MySQL中作为运算符是什么作用。它的作用就是判断是否存在结果,或者说判断查询子句是否有返回记录,如果子查询有一条或多条记录返回时返回 True给到父查询,否则返回 False。
那么它的语法格式是什么样子的?
SELECT 列名
FROM 表名
WHERE EXISTS
(SELECT 列名 FROM 表名 WHERE 条件);
父查询、子查询中的字段和数据表,可以相同也可以不同,即可以查询同一张表,也可以查询不同的表。
将 EXISTS 语句放到整个查询语句中去理解,它的执行细节如下:
先执行父查询,返回父查询的虚拟表:
SELECT 列名 FROM 表名;
然后在父查询执行得到的虚拟表中,从上往下依次对其记录进行 EXISTS 语句的判断,若 EXISTS 语句中的子查询有返回记录,则 EXISTS 语句的结果就是TRUE,那么对应的该条父查询记录就被取出,作为整个查询语句返回的结果集中的一条数据; 若 EXISTS 语句的结果是FALSE,则对应的该条父查询记录会被舍弃,不出现在整个查询语句返回的结果集里面。
综上所述, EXISTS 运算符可以算是一种特别的筛选条件——使用布尔值进行判断的筛选条件。
为更清晰地展示执行过程,此处特意从菜鸟教程网站摘取其示例,感谢菜鸟教程!如若不予以许可,请联系删除。
示例如下: