10.获取所有非manager的员工emp_no

2018-07-03  本文已影响0人  Bre_eze

获取所有非manager的员工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`));

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`));

解析:用到了联合查询
使用两次select:

select em.emp_no
from employees as em
where em.emp_no not in (
    select emp_no
    from dept_manager
);

先使用左连接,然后在对连结的右侧中null值进行过滤:(注意这里要使用on,on用于生成临时表阶段,where表示表生成之后再操作)

Select emp_no
from (
    select em.emp_no, de.dept_no
    from employees as em left join dept_manager as de
    on em.emp_no = de.emp_no
)
where dept_no is null;
上一篇下一篇

猜你喜欢

热点阅读