描述
有一个员工表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,以上例子输出:
思路:
1.只需要找到employees 的emp_no 不在dept_manager 范围内的员工就行。
SELECT emp_no
FROM employees
WHERE emp_no NOT IN(
SELECT emp_no
FROM dept_manager
);
2.先使用LEFT JOIN连接两张表,再从此表中选出dept_no值为NULL对应的emp_no记录
select e.emp_no from employees as e left join dept_manager as d on e.emp_no = d.emp_no
where d.dept_no is null