mysql 数据操作 多表查询 子查询 带IN关键字的子查询

本文深入探讨了SQL中子查询的应用,特别是带有IN关键字的子查询技巧。通过实例演示了如何利用子查询筛选特定条件的数据,如查找平均年龄超过25岁的部门、技术部员工以及不足一人的部门等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 



1 带IN关键字的子查询

#查询平均年龄在25岁以上的部门名
关键点部门名

以查询员工表的dep_id的结果 当作另外一条sql语句查询条件使用

in (sql语句)

mysql> select dep_id from employee group by dep_id having avg(age) >25 ;
+--------+
| dep_id |
+--------+
|    201 |
|    202 |
+--------+
2 rows in set (0.00 sec)

 


mysql> select name from department where id in (select dep_id from employee group by dep_id having avg(age) >25) ;
+--------------+
| name         |
+--------------+
| 人力资源     |
| 销售         |
+--------------+
2 rows in set (0.00 sec)

 

 

#查看技术部员工姓名

mysql> select name from employee where dep_id in (select id from department where name = "技术")  ;
+-----------+
| name      |
+-----------+
| mike      |
| liwenzhou |
+-----------+
2 rows in set (0.00 sec)

 

#查看不足1人的部门名

查询部门id 这里的部门人数至少有1人以上
一个id 对应一个员工 有得id对应多个员工
mysql> select dep_id from employee ;
+--------+
| dep_id |
+--------+
|    200 |
|    201 |
|    201 |
|    202 |
|    200 |
|    204 |
+--------+
6 rows in set (0.00 sec)

 

 

拿到是至少有一个人部门id  取反就是不足1人的部门id
mysql> select distinct dep_id from employee ;
+--------+
| dep_id |
+--------+
|    200 |
|    201 |
|    202 |
|    204 |
+--------+
4 rows in set (0.00 sec)

 

取反


mysql> select name from department where id not in(select distinct dep_id from employee) ;
+--------+
| name   |
+--------+
| 运营   |
+--------+
1 row in set (0.00 sec)

 

 
 

转载于:https://www.cnblogs.com/mingerlcm/p/9897648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值