
# WHERE
#### 功能描述
在WHERE子句中嵌套子查询，利用子查询的结果作为过滤条件。
#### 语法格式
```
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表中找到选了该课程编号的学生姓名。
```
SELECT name FROM student_info
  WHERE courseId = (SELECT courseId FROM course_info WHERE courseName = 'Biology');
```
