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