查询曾经在所有部门department都工作过的雇员employees的编号和姓名

Posted ggyzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询曾经在所有部门department都工作过的雇员employees的编号和姓名相关的知识,希望对你有一定的参考价值。

题目解读:

此题涉及到的数据库表:【departments -- 部门信息】、【dept_emp -- 部门_员工 关系表】、【employees -- 员工信息】

方法一:not exists

  1. 思路
    查找符合下列条件的雇员:不存在一个部门,雇员没有在该部门工作过;
  2. sql 语句
    select emp_no, -- 方法1
    first_name,
    last_name
    from employees
    where not exists( -- 不存在这样的部门
    select *
    from departments
    where not exists( -- 员工没有工作过
    select *
    from dept_emp
    where departments.dept_no=dept_emp.dept_no and
    dept_emp.emp_no=employees.emp_no));
    方法二:简单的逻辑
  3. 思路
    查找符合下列条件的雇员:雇员工作过的部门数 == 所有的部门数
  4. sql 语句
    select employees.emp_no, -- 方法2
    first_name,
    last_name
    from employees,
    dept_emp
    where employees.emp_no=dept_emp.emp_no
    group by emp_no
    having count() = (
    select count(
    )
    from departments);

以上是关于查询曾经在所有部门department都工作过的雇员employees的编号和姓名的主要内容,如果未能解决你的问题,请参考以下文章

在查询分析中编写触发器:当修改department表中的部门号时,同时对employee表中相应的部门号进行修改。

多表查询-----练习一

使用 SQL 查询获取在多个部门工作的员工数量

在部门的所有项目中工作的员工

Mysql案例5:取得平均薪资最高的部门的部门名称

在一个部门的所有项目中工作的员工