【MySQL牛客】3. 查找当前薪水详情以及部门编号
程序员文章站
2022-03-24 09:44:22
问题描述查找各个部门当前(dept_manager.to_date=‘9999-01-01’)领导当前(salaries.to_date=‘9999-01-01’)薪水详情以及其对应部门编号dept_no(注:请以salaries表为主表进行查询,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列)CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL, -- '员工编号',`salary` int(11...
问题描述
查找各个部门当前(dept_manager.to_date=‘9999-01-01’)领导当前(salaries.to_date=‘9999-01-01’)薪水详情以及其对应部门编号dept_no
(注:请以salaries表为主表进行查询,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_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`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL, -- '部门编号'
`emp_no` int(11) NOT NULL, -- '员工编号'
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
这题比较坑爹的一点是,两个表都指定了时间,我还以为这俩时间天然相等。草率了。
用内连接查询就可以搞定。连接点在于emp_no. 不要搞错了sql语句的书写顺序,where肯定在order by 之前。
方法一
select sa.emp_no, sa.salary, sa.from_date, sa.to_date, dm.dept_no from
salaries sa inner join dept_manager dm on sa.emp_no=dm.emp_no where
sa.to_date='9999-01-01' and dm.to_date='9999-01-01' order by sa.emp_no;
本文地址:https://blog.csdn.net/weixin_41687289/article/details/107645052