ANY关键字表示满足其中任意一个条件,它允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任意一个比较条什层查询条件。
例如,使用带 ANY关键字的子查询,查询满足条件的部门,SQL 语句如下
sql
SELECT * FROM department WHERE did>any(select did from employee);
上述语句执行成功后,结果如下:
sql
mysql> SELECT * FROM department WHERE did>any(select did from employee);
+-----+-----------+
| did | dname |
+-----+-----------+
| 2 | 媒体部 |
| 3 | 研发部 |
| 5 | 人事部 |
+-----+-----------+
3 rows in set (0.01 sec)
上述语句在执行的过程中,首先子查询会将 employee 表中的所有 did 查询出来,分别为 1、1、2、4,然后将 department 表中 did 的值与之进行比较,只要大于 employee.did 中的任意一个值,就是符合条件的查询结果,由于 department 表中的媒体部、研发部、人事部的 did 都大于 employee 表中的 did(did=1),因此输出结果为媒体部、研发部和人事部。