MySql数据库基本操作七(select子查询)

本文介绍了MySQL数据库中SELECT子查询的使用,包括标量子查询、FROM子查询以及EXISTS子查询的应用。通过实例解析了如何查询每个部门的员工数量、特定员工所在部门名称、部门的平均工资以及存在员工的部门名。

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

SELECT子查询

  仅仅支持标量子查询
  案例:查询每个部门的员工个数

SELECT d.*,(
		SELECT COUNT(*)
		FROM employees e
		WHERE e.department_id=d.department_id
) 个数
FROM departments d;

在这里插入图片描述

  案例:查询员工号=102的部门名

SELECT (
		SELECT department_name
		FROM departments d
		INNER JOIN employees e
		ON d.department_id=e.department_id
		WHERE e.employee_id=102
)部门名;

在这里插入图片描述

FROM子查询

    将子查询结果充当一张表,要求起别名
  案例:查询每个部门的品骏工资的工资等级
  查询每个部门的平均工资

SELECT AVG(salary), department_id
FROM employees
GROUP BY department_id;

在这里插入图片描述

SELECT * FROM job_grades;

在这里插入图片描述

  2连接1的结果集和job_grades表,筛选条件平均工资

SELECT ag_dep.*,g.grade_level
FROM (
		SELECT AVG(salary) ag,department_id
		FROM employees 
		GROUP BY department_id
)ag_dep
INNER JOIN job_grades g
ON ag_dep.ag BETWEEN lowest_sal AND highest_sal;

在这里插入图片描述

  EXISTS(相关子查询)

  语法:
    EXISTS(完整的查询语句)
    结果:
      1或者0

		SELECT EXISTS(
		SELECT employee_id 
		FROM employees 
		WHERE salary=300000
);

在这里插入图片描述

  案例:查询有员工的部门名

SELECT department_name
FROM departments d
WHERE EXISTS(
		SELECT *
		FROM employees e
		WHERE d.department_id=e.department_id
);
SELECT department_name
FROM departments d
WHERE d.department_id IN(
		SELECT department_id
		FROM employees 
);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值