089-where后面的列子查询

本文探讨了SQL中的多行比较操作符如in、notin、any、some和all,通过实例解析如何使用它们查询特定条件下的员工信息,如查找特定部门的所有员工,以及工资比较。重点讲解了in与=any、notin与<>all之间的等价关系,并展示了在查询其他工种和部门工资的场景中这些操作符的实际应用。

多行子查询
多行比较操作符
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';
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值