子查询中where查询条件要用IN(**在里面)关键字 或者=ANY(任意**)关键字,来表示值在这个子查询中。
注意:使用ANY/ALL谓词时必须同时使用比较运算符
| >any | 大于子查询结果中的某个值 |
|---|---|
| <any | 小于子查询结果中的某个值 |
| >=any | 大于等于子查询结果中的某个值 |
| <=any | 小于等于子查询结果中的某个值 |
| =any | 等于子查询结果中的某个值 |
| !=any或<>any | 不等于子查询结果中的某个值 |
| >all | 大于子查询结果中的所有值 |
| <all | 小于子查询结果中的所有值 |
| >=all | 大于等于子查询结果中的所有值 |
| <=all | 小于等于子查询结果中的所有值 |
| =all | 等于子查询结果中的所有值 |
| !=all或<>all | 不等于子查询结果中的任何一个值 |
例子:
SELECT * FROM employeesWHERE DepartmentID = (SELECT DepartmentID FROM departments WHERE DepartmentName='财务部')
当子查询中的结果只有一条时,where的查询条件可以用=等号,否则会报错。需要用IN关键字
SELECT * FROM employeesWHERE employees.EmployeeID = (SELECT EmployeeID FROM salary WHERE InCome < 2500)
1242 - Subquery returns more than 1 row
子查询多于一行
要改为
SELECT * FROM employeesWHERE employees.EmployeeID IN (SELECT EmployeeID FROM salary WHERE InCome < 2500)

或者在子查询前加any关键字
SELECT * FROM employeesWHERE employees.EmployeeID =ANY(SELECT EmployeeID FROM salary WHERE InCome < 2500)
