九、MySQL基础系列笔记之SQL DQL简单子查询

作者: 温新

分类: 【MySql】

阅读: 2129

时间: 2020-10-11 07:43:03

子查询指一个查询语句嵌套在另一个查询语句内部的查询。使用子查询时,先计算子查询,然后把子查询的结果作为外层的一个查询过滤条件。

常用的子查询操作符有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

请登录后再评论