SQL练习10:获取所有非manager的员工emp_no
题目描述
- 题目描述
- 考察知识点
- 解题思路
有一个员工表 employees
简况如下: 有一个部门领导表
dept_manager
简况如下: 请你找出所有非部门领导的员工
emp_no
,以上例子输出:
IN
,左外联结,EXISTS
。
1️⃣ 查询的要求是不在 dept_manager
表中的 emp_no
,使用 NOT IN + 子查询
。MYSQL官方文档中提到 IN
使用时效率不高,推荐使用 EXISTS
或 JOIN
。
SELECT emp_no
FROM employees
WHERE emp_no NOT IN(SELECT DISTINCT emp_no
FROM dept_manager)
2️⃣ 使用 LEFT JOIN
来连接两个表,再筛选非 manager
的员工。
SELECT e.emp_no
FROM employees e LEFT JOIN dept_manager d
ON e.emp_no = d.emp_no
WHERE dept_no IS NULL
3️⃣ 使用 NOT EXISTS + 子查询
的方式。
SELECT emp_no
FROM employees e
WHERE NOT EXISTS(SELECT DISTINCT d.emp_no
FROM dept_manager d
WHERE e.emp_no = d.emp_no)
题目来源:牛客网-SQL数据库实战题
✅ 每日打卡,❤ 点个赞再走吧!!!❤ 后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。