九、MySQL基础系列笔记之SQL DQL简单子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询。使用子查询时,先计算子查询,然后把子查询的结果作为外层的一个查询过滤条件。
常用的子查询操作符有ANY(SOME)、ALL、IN、EXISTS。
any/some-查询
以any为例,如 id > any(1,2,4);只要id大于any中的任何一个值就显示,也就是说,只要id大于any中的最小值即可。可以使用in来代替。
mysql> select * from user where id > any (select id from info);
+----+-----------+------------------+
| id | name | email |
+----+-----------+------------------+
| 2 | 王五 | 124568@qq.com |
| 3 | 张三 | zhangsan@163.com |
| 4 | 王美丽 | meili@163.com |
| 5 | 你真帅 | 7788641@qq.com |
| 6 | 刘一 | liuyi@163.com |
| 7 | 陈二 | 782372340@qq.com |
| 8 | 吴九 | 8193730-@qq.com |
+----+-----------+------------------+
7 rows in set (0.00 sec)
all-查询
如,id > all(1,2,4);id必须大于all()中所数的数才显示,也就是说,只要id大于all中的最大值即可。
mysql> select * from user where id > all(select id from info);
+----+--------+------------------+
| id | name | email |
+----+--------+------------------+
| 7 | 陈二 | 782372340@qq.com |
| 8 | 吴九 | 8193730-@qq.com |
+----+--------+------------------+
in-查询
mysql> select * from user where id in (select id from info);
exists-查询
exists关键字后的参数是任何一个查询语句。查询有结果为1,无结果为0.
mysql> select name from user where exists(select * from user where id > 3);
2020-10-11
请登录后再评论