嵌套查询
单值嵌套查询
值返回结果是一个值的嵌套查询称为单值嵌套查询
对Sales数据库,列出市场部的所有员工的编号
USE Sale
GO
SELECT employee_id FROM employee
WHERE department_id=( SELECT department_id
FROM department
WHERE department_name='市场部'
)
语句的执行过程分两个过程,首先在部门表(department)中找出“市场部”的编号(例如为D002)然后再在员工表中找出部门号等于D002的记录,列出这些记录的员工编号。
多值嵌套查询
子查询的返回结果是一列值的嵌套查询称为多值嵌套查询。若某个查询的返回值不止一个,则必须指明在WHERE子句中应怎样使用这些返回值。通常使用条件运算ANY(或SOME),ALL和IN
1,ANY运算符的用法
对Sales数据库,列出D001号部门中工资比D002号部门的员工最低工资高的员工编号和工资。
ANY 用法: ANY()
用法说明:满足子查询中任意一个值的记录
SELECT employee_id,wages FROM employee
WHERE department_id='D001' AND wages>ANY
( SELECT wages
FROM employee
WHERE department_id='D002'
)
2,ALL运算符的用法
ALL用法: ALL()
用法说明:满足子查询中所有值的记录
对Sales数据库,列出部门编号为D001的员工,这些员工的工资比部门为D002的员工的最高工资还要高的员工的编号和工资
SELECT employee_id,wages FROM employee
WHERE department_id='D001' AND wages>ALL
( SELECT wages
FROM employee
WHERE department_id='D002'
)</