Test 1
有一个全部员工的薪水表 salaries
简况如下:
有一个各个部门的领导表 dept_manager
简况如下:
请你查找各个部门当前领导的薪水详情以及其对应部门编号 dept_no
,输出结果以 salaries.emp_no
升序排序,并且请注意输出结果里面 dept_no
列是最后一列,以上例子输出如下:
解题思路
考察知识点
内联结、ORDER BY
。
先观察两张表的结构,两表中的都有 emp_no
列,可以使用内联结,并设置联结条件 s.emp_no = d.emp_no
。
WHERE
的条件不加也可以,但真实场景下是要加的,因为要排除已离职的员工(to_date != '9999-01-01'
)。最后通过 emp_no
升序排序。
SELECT s.*, dept_no FROM salaries AS s INNER JOIN dept_manager AS d ON s.emp_no = d.emp_no -- WHERE s.to_date='9999-01-01' and d.to_date='9999-01-01' ORDER BY emp_no 复制代码
Test 2
有一个员工表,employees
简况如下:
有一个部门表,dept_emp
简况如下:
请你查找所有已经分配部门的员工的 last_name
和 first_name
以及 dept_no
,未分配的部门的员工不显示,以上例子如下:
解题思路
考察知识点
内联结
dept_emp
表中的数据都是已分配了部门的员工信息,因此,只需将 dept_emp
表和 employees
表通过内联结的方式连接起来,并添加联结条件即可。
SELECT e.last_name, e.first_name, d.dept_no FROM employees AS e INNER JOIN dept_emp AS d ON e.emp_no = d.emp_no