欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【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

相关标签: MySQL练习