【Oracle】Oracle的子查询——单行子查询和多行子查询;

1、查询部分分为主查询和子查询;
2、根据返回值的记录多少分为单行子查询和多行子查询;单行子查询用单行比较符=连接;多行子查询用多行比较符in连接;
3、子查询的内容可以放在FROM后面,也可以放在WHERE后面,也可以放在HAVING后面;
4、完整的SELECT语句可以拥有GROUP BY,HAVING子句,也可以使用组函数;也可以从多个表中查询;
5、子查询的内容必须用小括号来界定;
6、例子1:子查询(子句)在FROM后面的:

SELECT first_name,last_name
FROM 
(SELECT first_name,last_name
FROM s_emp
WHERE 1=1
AND first_name='国藩'
)
WHERE 1=1
AND last_name='曾';

精简一下就是:

SELECT first_name,last_name
FROM 
(子查询)
WHERE 1=1
AND last_name='曾';

这里就像是一个定于从句,这里的(子查询)就替换成了另一个select语句;这里要注意,子查询语句里没有表示结束的分号;并且主查询的范围必须小于子查询,否则会因查不到数据而报错;

7、例子2:子查询(子句)在WHERE后面的

SELECT first_name,last_name 
FROM s_emp
WHERE dept_id=
(
SELECT dept_id
FROM s_emp
WHERE last_name='曾'
);

这里查询的是姓是和‘曾’的所在的部门ID相同(只有一个姓曾)的所有人的姓名;

这里,有人问了,如果有好几个姓曾的人怎么办,我要把所有姓曾人所在部门的人的姓名都查出来怎么办,这里就是多行子查询;把等号换成in即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值