链接:https://www.nowcoder.com/questionTerminal/32c53d06443346f4a2f2ca733c19660c
来源:牛客网
[编程题]获取所有非manager的员工emp_no
- 热度指数:42763 时间限制:1秒 空间限制:32768K
- 算法知识视频讲解
获取所有非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`));
输入描述:
无
输出描述:
emp_no |
---|
10001 |
10003 |
10007 |
10008 |
10009 |
10011 |
示例1
输入
无
输出
无
--[编程题]获取所有非manager的员工emp_no
SELECT employees.emp_no
FROM employees
LEFT JOIN dept_manager ON employees.emp_no = dept_manager.emp_no
WHERE dept_manager.emp_no IS NULL;
--第二种方法
select emp_no from employees where emp_no not in
(select emp_no from dept_manager)
--第三种方法
SELECT a.emp_no
FROM employees a
WHERE a.emp_no NOT IN (
SELECT b.emp_no
FROM dept_manager b
);
/*join on 的执行顺序是先完成筛选后再进行where语句。*/