牛客SQL题解-找出所有非部门领导的员工emp_no


题目描述

有一个员工表employees简况如下:
 
有一个部门领导表dept_manager简况如下:
 
建表语句如下:
 
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`)); 
请你找出所有非部门领导的员工emp_no,以上例子输出:

答案详解

方法一

先使用LEFT JOIN连接两张表,再从此表中选出dept_no值为NULL对应的emp_no记录(直接使用left Excluding JOIN)

select employees.emp_no from employees left JOIN dept_manager
on employees.emp_no=dept_manager.emp_no
where dept_no is null

方法二

使用not in 选出在employees但不在dept_manager中的emp_no记录

select emp_no from employees
where emp_no not in(
    select emp_no
    from dept_manager
)

方法三

select emp_no from employees
where not exists(
    select emp_no
    from dept_manager
    where emp_no=employees.emp_no
)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM