MySQL子查询

412 阅读1分钟

子查询

子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在 WHERE 子句中。

WHERE 表达式 操作符 (子查询)
其中,操作符可以是*比较运算符和 INNOT INEXISTSNOT EXISTS 等关键字。

- IN | NOT IN 
- 当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE;若使用关键字 NOT,则返回值正好相反。
- EXISTS | NOT EXISTS
- 用于判断子查询的结果集是否为空,若子查询的结果集不为空,返回 TRUE,否则返回 FALSE;若使用关键字 NOT,则返回的值正好相反。

eg:
1.使用子查询在 student1 表和 course 表中查询学习 Python 课程的学生姓名,SQL 语句和运行结果如下。
select name from student1 where course_id in (select cid from course where course_name = 'Python');

image.png 2. 查询 course 表中是否存在 id=3 的课程,如果存在,就查询出 student1 表中 height 字段大于 180 的记录,SQL 语句和运行结果如下。 select * from student1 where height > 180 and exists(select * from course where cid=3);

image.png

MARK

  1. 子查询语句可以嵌套在 SQL 语句中任何表达式出现的位置。
  2. 只出现在子查询中而没有出现在父查询中的表不能包含在输出列中。