-- where后面的 列子查询(多行子查询)/*in/not in 等于/不等于 列表中的任意一个 (☆)any | some 和子查询返回的某一个值比较all 和子查询返回的所有值比较*/-- 案例1:返回location_id 是1400或1700的部门中的所有员工姓名-- ①查询location_id是1400或1700的部门编号-- ②查询员工姓名要求部门编号是①中的一个SELECT last_namefrom employeesWHERE department_id in(SELECT DISTINCT department_id -- 这里还是需要去重的FROM departmentsWHERE location_id in (1400,1700));-- 或SELECT last_namefrom employeesWHERE department_id=ANY(SELECT DISTINCT department_id -- 这里还是需要去重的FROM departmentsWHERE location_id in (1400,1700));-- 案例2:返回其他工种中比job_id 为“IT_PROG”部门任意工资低的员工的员工号,姓名,job_id以及salary-- ①查询job_id为“ITPROG”部门任一工资-- ②查询员工号,姓名,job_id以及salarySELECT last_name,employee_id,salaryFROM employeesWHERE salary<ANY(SELECT DISTINCT salaryFROM employeesWHERE job_id=\"IT_PROG\")AND job_id<>\"IT_PROG\";-- 或SELECT last_name,employee_id,salaryFROM employeesWHERE salary<(SELECT MAX(salary)FROM employeesWHERE job_id=\"IT_PROG\")AND job_id<>\"IT_PROG\";-- 案例3:返回其他工种中比job_id 为“IT_PROG”部门所有工资低的员工的员工号,姓名,job_id以及salarySELECT last_name,employee_id,salaryFROM employeesWHERE salary<ALL(SELECT DISTINCT salaryFROM employeesWHERE job_id=\"IT_PROG\")AND job_id<>\"IT_PROG\";-- 或SELECT last_name,employee_id,salaryFROM employeesWHERE salary<(SELECT MIN(salary)FROM employeesWHERE job_id=\"IT_PROG\")AND job_id<>\"IT_PROG\";
10.3where后面的 列子查询使用——MySQL
未经允许不得转载:爱站程序员基地 » 10.3where后面的 列子查询使用——MySQL