• 获取所有非manager的员工emp_no


    个人网站

    文章首发于公众号小肖学数据分析

    题目来自牛客网

    描述

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

    emp_nobirth_datefirst_namelast_namegenderhire_date
    100011953-09-02GeorgiFacelloM1986-06-26
    100021964-06-02BezalelSimmelF1985-11-21
    100031959-12-03PartoBamfordM1986-08-28

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

    dept_noemp_nofrom_dateto_date
    d001100021996-08-039999-01-01
    d002100031990-08-059999-01-01

    请你找出所有非部门领导的员工emp_no,以上例子输出:

    emp_no
    10001

    解题思路:

    方案1: 员工表员工id不在部门表内

    方案2: 采用左连接 ,取部门表数据为空的结果

    1. -- 方案1 NOT IN+子查询
    2. select emp_no
    3. from employees
    4. where emp_no not in (select emp_no from dept_manager);
    5. -- 方案2 LEFT JOIN左连接 判断IS NULL
    6. SELECT e.emp_no,d.dept_no,d.emp_no
    7. FROM employees AS e
    8. LEFT JOIN dept_manager AS d
    9. ON e.emp_no=d.emp_no
    10. WHERE dept_no IS NULL;
    1. --测试数据
    2. drop table if exists `dept_manager` ;
    3. drop table if exists `employees` ;
    4. CREATE TABLE `dept_manager` (
    5. `dept_no` char(4) NOT NULL,
    6. `emp_no` int(11) NOT NULL,
    7. `from_date` date NOT NULL,
    8. `to_date` date NOT NULL,
    9. PRIMARY KEY (`emp_no`,`dept_no`));
    10. CREATE TABLE `employees` (
    11. `emp_no` int(11) NOT NULL,
    12. `birth_date` date NOT NULL,
    13. `first_name` varchar(14) NOT NULL,
    14. `last_name` varchar(16) NOT NULL,
    15. `gender` char(1) NOT NULL,
    16. `hire_date` date NOT NULL,
    17. PRIMARY KEY (`emp_no`));
    18. INSERT INTO dept_manager VALUES('d001',10002,'1996-08-03','9999-01-01');
    19. INSERT INTO dept_manager VALUES('d002',10003,'1990-08-05','9999-01-01');
    20. INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
    21. INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
    22. INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');

    每日更新:更多资料请关注公众号小肖学数据分析

    公众号回复加油即可获取PDF版本

  • 相关阅读:
    JAVA计算机毕业设计书籍影视评论系统(附源码、数据库)
    git 使用之撤销暂存区提交
    Java 泛型中的通配符
    分页查询和聚合查询
    2021年暨南大学计算机848真题
    深聊测开领域之:一文搞懂什么是敏捷测试,如何做敏捷测试,建议先收藏再学习。
    无代码开发添加数据入门教程
    DraSearchTools...
    对 Android APK 进行反编译
    解决eclipse中的Java文件,使用idea打开的乱码问题
  • 原文地址:https://blog.csdn.net/qq_41387939/article/details/134532457