多行子查询
多行比较操作符
in
not in
any
som
all
in 与 =any 等价
not in 与 <>all 等价
#返回location_id是1400或1700的部门中的所有员工姓名
#1产寻location是1400、1700的部门编号
SELECT DISTINCT department_id
FROM departments
WHERE location_id IN (1400,1700)
SELECT last_name
FROM `employees`
WHERE department_id IN (
SELECT DISTINCT department_id
FROM departments
WHERE location_id IN (1400,1700)
);
#题目:返回其它工种中比job_id为‘IT_PROG’部门任一工资低的员工的#员工号、姓名、job_id 以及salary
SELECT DISTINCT salary
FROM employees
WHERE job_id='IT_PROG';
SELECT `employee_id`,`last_name`,`job_id`,`salary`
FROM `employees`
WHERE salary<ANY(
SELECT DISTINCT salary
FROM employees
WHERE job_id='IT_PROG'
)AND job_id<>'IT_PROG';
#或者
SELECT `employee_id`,`last_name`,`job_id`,`salary`
FROM `employees`
WHERE salary<ANY(
SELECT MAX(salary) #比较
FROM employees
WHERE job_id='IT_PROG'
)AND job_id<>'IT_PROG';
#题目:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id 以及salary
SELECT `employee_id`,`last_name`,`job_id`,`salary`
FROM `employees`
WHERE salary<ALL(
SELECT DISTINCT salary
FROM employees
WHERE job_id='IT_PROG'
)AND job_id<>'IT_PROG';
#或者
SELECT `employee_id`,`last_name`,`job_id`,`salary`
FROM `employees`
WHERE salary<ANY(
SELECT MIN(salary)
FROM employees
WHERE job_id='IT_PROG'
)AND job_id<>'IT_PROG';
本文探讨了SQL中的多行比较操作符如in、notin、any、some和all,通过实例解析如何使用它们查询特定条件下的员工信息,如查找特定部门的所有员工,以及工资比较。重点讲解了in与=any、notin与<>all之间的等价关系,并展示了在查询其他工种和部门工资的场景中这些操作符的实际应用。
3282

被折叠的 条评论
为什么被折叠?



