mysql 子语句_MySQL【基础】子语句查询

子查询(嵌套查询): 查多次, 多个select

注意: 第一次的查询结果可以作为第二次的查询的 条件 或者 表名 使用.

子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字. 还可以包含比较运算符:= 、 !=、> 、

1.作为表名使用

select * from (select * from person) as 表名;

ps:大家需要注意的是: 一条语句中可以有多个这样的子查询,在执行时,最里层括号(sql语句) 具有优先执行权.
注意: as 后面的表名称不能加引号('')

2.求最大工资那个人的姓名和薪水

#求最大工资

SELECT MAX(salary) FROM person;

结果为:

983fbd4fb416afb85f8109b51e7aa7ef.png

#合并

select name,salary from person where salary=(select max(salary) from person);

结果为:

38d192ba9e6761dc37f23b2346046fd9.png

3. 求工资高于所有人员平均工资的人员

#求平均工资

select avg(salary) from person;

结果为:

aee2bfb953e0a0f2c97ea3f69b94321e.png

#合并

SELECT name,salary FROM person where salary>(SELECT AVG(salary) FROM person);

结果为:

4b6bd74ed0319457e0e9d2dcd238130e.png

4.练习

1.查询平均年龄在20岁以上的部门名

#先查出符合的did

SELECT did from person GROUP BY did HAVING AVG(person.age) > 20

结果为:

4f9cff9cc74d73c34b5f107324035980.png

#组合

SELECT * from dept where dept.did in (

select dept_id from person GROUP BY dept_id HAVING avg(person.age) > 20

);

结果为:

4bd68098c173c908ffc3493433d3dc4f.png

2.查询教学部 下的员工信息

SELECT * FROM person where did = (SELECT did FROM dept where dname='教学部')

结果为:

8449bb8f772d0ef365dfab025896112d.png

3.查询大于所有人平均工资的人员的姓名与年龄

SELECT * FROM person where salary >(SELECT AVG(salary) from person)

结果为:

0f861fde3a077c1e5494103c7f10ab93.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值