mysql 子查询

时间:2021-07-11
本文章向大家介绍mysql 子查询,主要包括mysql 子查询使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

实例

SELECT
    * 
FROM
    student 
WHERE
    class_id IN ( SELECT id FROM class WHERE id = 2 );
+----+--------+------+------+----------+--------+
| id | name   | sex  | age  | class_id | status |
+----+--------+------+------+----------+--------+
|  4 | 小红   | 女   |   23 |        2 |      1 |
|  5 | 小花   | 女   |   19 |        2 |      1 |
+----+--------+------+------+----------+--------+
2 rows in set (0.00 sec)

实例

select * from student where class_id < (select id from class where id = 2);
+----+--------+------+------+----------+--------+
| id | name   | sex  | age  | class_id | status |
+----+--------+------+------+----------+--------+
|  1 | 张三   | 男   |   18 |        1 |      1 |
|  2 | 王五   | 男   |   20 |        1 |      1 |
|  3 | 李四   | 男   |   20 |        1 |      1 |
+----+--------+------+------+----------+--------+
3 rows in set (0.00 sec)

实例

select * from student where class_id = (select id from class where id = 2);
+----+--------+------+------+----------+--------+
| id | name   | sex  | age  | class_id | status |
+----+--------+------+------+----------+--------+
|  4 | 小红   | 女   |   23 |        2 |      1 |
|  5 | 小花   | 女   |   19 |        2 |      1 |
+----+--------+------+------+----------+--------+
2 rows in set (0.00 sec)

实例

SELECT
    class.`id`,
    class.`name`,
    ( SELECT count( * ) FROM student WHERE student.`class_id` = class.`id` ) AS 学生数 
FROM
    class;
+------+---------+-----------+
| id   | name    | 学生数    |
+------+---------+-----------+
|    1 | 班级1   |         3 |
|    2 | 班级2   |         2 |
|    3 | 班级3   |         2 |
+------+---------+-----------+
3 rows in set (0.00 sec)

原文地址:https://www.cnblogs.com/hu308830232/p/14998366.html