题目描述

有一个全部员工的薪水表salaries简况如下:

alt

有一个各个部门的领导表dept_manager简况如下:

alt

请你查找各个部门当前领导的薪水详情以及其对应部门编号dept_no,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列,示例结果格式:

alt

SQL

SELECT s.emp_no,s.salary,s.from_date,s.to_date,dm.dept_no FROM salaries AS s LEFT JOIN dept_manager AS dm ON s.emp_no = dm.emp_no WHERE dm.dept_no IS NOT NULL ORDER BY s.emp_no ASC

结题思路

1.首先想到 连接查询,连接2个表的数据

考察连接查询的 连接格式,连接条件

个人工作中使用 LEFT 和 INNER 比较多,是否需要学习其他连接?

连接后得到了以下数据

alt

注重点:以后要将要获取的列,具名填写,养成习惯

2.根据结果进一步修正

alt

具名后发现,dm.dept_no存在null值,示例结果没有显示null数据,处理null数据

想到 IS NOT NULL函数,将null数据去除,最后ORDER BY排序即可

工作中经常使用 IS NOT NULL 函数,第一反应就是 IS NOT NULL,但是也要记住 IS NULL 函数,关联记忆,现在就是知道这个函数,但是不能一下子想起来,感觉做排除的时候,一下子能想到2个函数,2种方案,会比较好,要养成举一反三的思维,不能固化自己

收获

1.要求得到的结果集,下次直接具名标注,养成习惯,一步到位

2.注意一下使用的函数,有没有相关联的函数也可以做,例如语文的同义词和反义词,关联记忆自己所学,举一反三