题目描述

有一个员工表 employees 简况如下:

获取所有非manager的员工emp_no - 图1

有一个部门领导表 dept_manager 简况如下:

获取所有非manager的员工emp_no - 图2

建表语句如下:

  1. -- employees
  2. CREATE TABLE `employees` (
  3. `emp_no` int(11) NOT NULL,
  4. `birth_date` date NOT NULL,
  5. `first_name` varchar(14) NOT NULL,
  6. `last_name` varchar(16) NOT NULL,
  7. `gender` char(1) NOT NULL,
  8. `hire_date` date NOT NULL,
  9. PRIMARY KEY (`emp_no`));
  10. -- dept_manager
  11. CREATE TABLE `dept_manager` (
  12. `dept_no` char(4) NOT NULL,
  13. `emp_no` int(11) NOT NULL,
  14. `from_date` date NOT NULL,
  15. `to_date` date NOT NULL,
  16. PRIMARY KEY (`emp_no`,`dept_no`));

请你找出所有非部门领导员工的 emp_no,上述示例查询输出结果如下:

获取所有非manager的员工emp_no - 图3

答案解析

我们可以使用 NOT IN 语句 + 子查询的方式求解

SQL 语句非常简单,就不赘述了,代码如下:

  1. SELECT emp_no FROM
  2. employees
  3. WHERE emp_no NOT IN (SELECT emp_no FROM dept_manager);