牛客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