美文网首页
10.获取所有非manager的员工emp_no

10.获取所有非manager的员工emp_no

作者: Bre_eze | 来源:发表于2018-07-03 21:41 被阅读0次

    获取所有非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;
    

    相关文章

      网友评论

          本文标题:10.获取所有非manager的员工emp_no

          本文链接:https://www.haomeiwen.com/subject/xeajuftx.html