20.单行子查询

【1】什么是子查询?

一条SQL语句含有多个select

-- 引入子查询:
-- 查询所有比"CLARK"工资高的员工的信息

-- 步骤1:"CLARK"工资
select sal 
from emp
where ename = 'CLARK'; -- 2450
-- 步骤2:查询所有比"CLARK"工资搞得员工信息
select *
from emp 
where sal > 2450;
-- 两次命令解决问题 -->效率低,第二个依托于第一个命令,第一个命令的结果给第二个使用,但是因为第一个命令的结果不确定要改,所以第二个命令也会导致修改

-- 将步骤1和步骤2合并 -->子查询 :
select * from emp where sal >(select sal from emp where ename='CLARK');
-- 通过一个命令解决问题 -->效率高

【2】执行顺序:

先执行子查询,再执行外查询;

【3】不相关子查询:

子查询可以独立运行,称为不相关子查询

【4】不相关子查询:

根据子查询的结果行数,可以分为单行子查询和多行子查询

-- 单行子查询:
-- 查询工资高于平均工资的员工名字和工资
select ename,sal
from emp 
where sal >(select avg(sal) from emp);
-- 查询和CLARK同一部门且比他工资低的员工名字和工资
select ename,sal
from emp 
where deptno = (select deptno from emp where ename = 'CLARK') 
			and 
			sal < (select sal from emp where ename = 'CLARK')

-- 查询职务和Scott相同,比Scott雇佣时间早的雇员信息:
select *
from emp
where HIREDATE <(select HIREDATE from emp where ename = 'Scott') 
			and 
			job = (select job from emp where ename = 'Scott')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值