MySQL之——子查询

 子查询

        子查询就是嵌套在其他SQL语句内的查询语句,且必须出现在圆括号内(查询一般指select语句).

        子查询的结果可以作为外层查询的过滤条件或计算字段(聚合函数)。

使用子查询过滤

        子查询过滤一般与[not] in 结合使用,也可以使用其他运算符: >   <   =   !=

select 字段1[,字段2...]
from 表1
where 字段1 [not] in (select 字段1 from 表2 where 条件)

#查找所在部门包含e的员工信息
select * from emp 
where deptno in (select deptno from dept where deptno like '%e%');

        同时 all,any,some是用于条件比较的关键字,用于比较一个值与子查询查询结果集中的多个值。 

        all:表示子查询结果集中的所有值进行比较,需要满足条件的是所有值 

#佣金比所有人都高的员工
select * from emp
where sal > all(select ifnull(comm,0) from emp);

        any:表示子查询结果集中随便一个值进行比较,只要有一个满足即可

#佣金比有的人工资还要高的员工
select * from emp
where ifnull(comm,0) > any(select sal from emp);

 子查询作为计算字段

        同时子查询也可以作为计算字段,括号中常与聚合函数配合使用

select 
    字段1,
    字段2,
    ...,
(select 聚合函数 from 表2 [where 表2.字段1 = 表1.字段1])
from 表1 [where 条件];



#查询部门名和部门人数
select dname,(select count(*) from emp where emp.deptno = dept.deptno) as emps
from dept;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coke_3.2.2

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

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

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

打赏作者

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

抵扣说明:

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

余额充值