更新时间:2022-02-22 GMT+08:00

WHERE嵌套子查询

功能描述

在WHERE子句中嵌套子查询,利用子查询的结果作为过滤条件。

语法格式

1
2
SELECT [ALL | DISTINCT] attr_expr_list FROM table_reference
  WHERE {col_name operator (sub_query) | [NOT] EXISTS sub_query};

关键字

  • ALL:返回重复的行。为默认选项。其后只能跟*,否则会出错。
  • DISTINCT:从结果集移除重复的行。
  • WHERE:WHERE子句嵌套将利用子查询的结果作为过滤条件。
  • operator:包含关系运算符中的等式与不等式操作符及IN,NOT IN,EXISTS,NOT EXISTS操作符。
    • 当operator为IN或者NOT IN时,子查询的返回结果必须是单列。
    • 当operator为EXISTS或者NOT EXISTS时,子查询中一定要包含WHERE条件过滤。当子查询中有字段与外部查询相同时,需要在该字段前加上表名。

注意事项

所要查询的表必须是已经存在的表,否则会出错。

示例

先通过子查询在course_info中找到Biology所对应的课程编号,再在student_info表中找到选了该课程编号的学生姓名。

1
2
SELECT name FROM student_info
  WHERE courseId = (SELECT courseId FROM course_info WHERE courseName = 'Biology');