题目描述
查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_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`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
输出:
emp_no | salary |
---|---|
10011 | 25828 |
省略 | 省略 |
10001 | 60117 |
解题方案
首先我们需要明确需要的条件
- 两表首先需要使用emp_no进行关联
- 由于需求是入职时候的薪水,所以额外又有一条关联关系是,employees表的hire_date应该与salaries表的from_date应该一致,所以在此注意别落下了这个约束条件(小编我就是落下了这个…)
- 本次查询还考察了排序,当然是我们熟知的order by 也少不了倒序desc关键字
综上所述的代码如下:
select emp.emp_no,ss.salary
from employees as emp ,salaries as ss
where emp.emp_no=ss.emp_no
and emp.hire_date = ss.from_date
order by emp.emp_no desc