获取所有非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;
网友评论