数据库教程:【MySQL牛客】3. 查找当前薪水详情以及部门编号

问题描述查找各个部门当前(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; 

需要了解更多数据库技术:【MySQL牛客】3. 查找当前薪水详情以及部门编号,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/816150.html

(0)
上一篇 2021年9月15日
下一篇 2021年9月15日

精彩推荐