数据库
首页 > 数据库> > MySQL数据库之子查询

MySQL数据库之子查询

作者:互联网

子查询

标量子查询

MariaDB [sel]> select * from resume where name=(select name from resume where id=3);
+----+-------+-----------+
| id | name  | skill     |
+----+-------+-----------+
|  3 | Jerry | php,mysql |
+----+-------+-----------+
# `1 row in set (0.010 sec)`
MariaDB [sel]> select * from grades where name=(select name from grades order by math desc limit 1);
+-------+---------+------+
| name  | chinese | math |
+-------+---------+------+
| Sunny |      93 |   96 |
+-------+---------+------+
# `1 row in set (0.004 sec)`
MariaDB [sel]>  select * from grades where name=(select name from grades where math=(select max(math) from grades));
+-------+---------+------+
| name  | chinese | math |
+-------+---------+------+
| Sunny |      93 |   96 |
+-------+---------+------+
# `1 row in set (0.001 sec)`

列子查询

MariaDB [sel]> select * from grades where name in (select name from grades where math>92);
+-------+---------+------+
| name  | chinese | math |
+-------+---------+------+
| Sunny |      93 |   96 |
| Marry |      95 |   94 |
| Tommy |      98 |   94 |
+-------+---------+------+
# `3 rows in set (0.007 sec)`
MariaDB [sel]> select * from grades where name not in (select name from grades where math>92);
+-------+---------+------+
| name  | chinese | math |
+-------+---------+------+
| Jerry |      97 |   91 |
+-------+---------+------+
# `1 row in set (0.008 sec)`

MariaDB [sel]> select * from grades where name in (select name from grades where math<92);
+-------+---------+------+
| name  | chinese | math |
+-------+---------+------+
| Jerry |      97 |   91 |
+-------+---------+------+
# `1 row in set (0.000 sec)`

行子查询

MariaDB [sel]> select * from grades where (sex,math) in (select sex,max(math) from grades group by sex);
+-------+------+---------+------+
| name  | sex  | chinese | math |
+-------+------+---------+------+
| Sunny | boy  |      93 |   96 |
| Marry | girl |      95 |   94 |
+-------+------+---------+------+
# `2 rows in set (0.001 sec)`

表子查询

MariaDB [sel]> select * from (select * from grades order by math desc) best group by sex;
+-------+------+---------+------+
| name  | sex  | chinese | math |
+-------+------+---------+------+
| Sunny | boy  |      93 |   96 |
| Marry | girl |      95 |   94 |
+-------+------+---------+------+
# `2 rows in set (0.007 sec)`

存在子查询

MariaDB [sel]> select * from grades where exists (select * from grades where math>90);
+-------+------+---------+------+
| name  | sex  | chinese | math |
+-------+------+---------+------+
| Sunny | boy  |      93 |   96 |
| Jerry | boy  |      97 |   91 |
| Marry | girl |      95 |   94 |
| Tommy | boy  |      98 |   94 |
+-------+------+---------+------+
# `4 rows in set (0.001 sec)`
MariaDB [sel]> select * from grades where not exists (select * from grades where math>90);
# `Empty set (0.001 sec)`

标签:name,数据库,查询,grades,math,MySQL,where,select
来源: https://www.cnblogs.com/SharkJiao/p/14137862.html