oracle基础 第九篇 sql查询 子查询

子查询语法:

子查询 (内查询) 在主查询之前一次执行完成。

子查询的结果被主查询(外查询)使用 。

 

注意事项:

子查询要包含在括号内。

将子查询放在比较条件的右侧。

单行操作符对应单行子查询,多行操作符对应多行子查询。

 

单行子查询:

只返回一行。

使用单行比较操作符:

操作符 含义
=    Equal to
 >Greater than
 >= Greater than or equal to
<    Less than
<=  Less than or equal to
<>Not equal to

 

 

 

 

 

 

 

 

例如:

 

--查询员工名为chen的manager的信息
SELECT
	last_name,
	salary,
	employee_id
FROM
	employees
WHERE
	employee_id = (
		SELECT
			manager_id
		FROM
			employees
		WHERE
			LOWER (last_name) = 'chen'
	);

 

--返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id和工资
SELECT
	job_id,
	salary
FROM
	employees
WHERE
	job_id = (
		SELECT
			job_id
		FROM
			employees
		WHERE
			employee_id = 141
	)
AND salary > (
	SELECT
		salary
	FROM
		employees
	WHERE
		employee_id = 143
);

 

--返回公司工资最少的员工的last_name,job_id和salary
SELECT
	job_id,
	last_name,
	salary
FROM
	employees
WHERE
	salary = (
		SELECT
			MIN (salary)
		FROM
			employees
	);

 

子查询中的 HAVING 子句:

首先执行子查询。

向主查询中的HAVING 子句返回结果

例如:

--查询最低工资大于50号部门最低工资的部门id和其最低工资
SELECT
	department_id,
	MIN (salary)
FROM
	employees
GROUP BY
	department_id
HAVING
	MIN (salary) > (
		SELECT
			MIN (salary)
		FROM
			employees
		WHERE
			department_id = 50
	);

多行子查询:

返回多行。

使用多行比较操作符。

操作符含义
IN等于列表中的任意一个
ANY和子查询返回的某一个
ALL值比较 和子查询返回的所有值比较

 

 

 

 

 

 

例如:

--返回其它部门中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary
SELECT
	employee_id,
	last_name,
	job_id,
	salary
FROM
	employees
WHERE
	job_id <> 'IT_PROG'
AND salary < ANY (
	SELECT
		salary
	FROM
		employees
	WHERE
		job_id = 'IT_PROG'
);

 

 

参考来自尚硅谷视频

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风而行无疾而歌

看官,觉得不错,奖励一下呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值