题目描述

有一个全部员工的薪水表 salaries 简况如下:

查找各个部门领导的薪水以及对应部门编号 - 图1

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

查找各个部门领导的薪水以及对应部门编号 - 图2

建表语句如下:

  1. -- salaries
  2. CREATE TABLE `salaries` (
  3. `emp_no` int(11) NOT NULL,
  4. `salary` int(11) NOT NULL,
  5. `from_date` date NOT NULL,
  6. `to_date` date NOT NULL,
  7. PRIMARY KEY (`emp_no`,`from_date`));
  8. -- dept_manager
  9. CREATE TABLE `dept_manager` (
  10. `dept_no` char(4) NOT NULL,
  11. `emp_no` int(11) NOT NULL,
  12. `to_date` date NOT NULL,
  13. PRIMARY KEY (`emp_no`,`dept_no`));

请你查找各个部门领导薪水的详情以及其对应部门编号 dept_no,输出结果按照 salaries.emp_no 升序排序,并且注意,输出结果里面 dept_no 列是最后一列

本示例的查询结果如下:

查找各个部门领导的薪水以及对应部门编号 - 图3

答案解析

本题涉及到联表查询,将 salariesdept_manager 这两张表使用 join 语句进行连接。根据题目要求,将薪水表中所有的记录以及部门表中领导的信息筛选出来,最后按照salaries.emp_no 升序排序即可。

SQL 语句如下:

  1. SELECT s.*,d.dept_no
  2. FROM salaries AS s INNER JOIN dept_manager AS d
  3. ON s.emp_no = d.emp_no
  4. ORDER BY s.emp_no ASC;