数据操作语言:表链接查询(四)
题目
查询每名员工的编号、姓名、部门、月薪、工资等级、工龄、上司编号、上司姓名、上司部门?
| #查询每名员工的编号、姓名、部门、月薪、工资等级、工龄、上司编号、上司姓名、上司部门? | |
| SELECT | |
| e.empno,e.ename,d.dname, | |
| e.sal+IFNULL(e.comm,0),s.grade, | |
| FLOOR(DATEDIFF(NOW(),e.hiredate)/365), | |
| t.empno AS mgrno,t.ename AS mname,t.dname AS edname | |
| FROM t_emp e LEFT JOIN t_dept d ON e.deptno=d.deptno | |
| LEFT JOIN t_salgrade s ON e.sal BETWEEN s.losal AND s.hisal | |
| LEFT JOIN | |
| (SELECT e1.empno,e1.ename,d1.dname | |
| FROM t_emp e1 JOIN t_dept d1 | |
| ON e1.deptno=d1.deptno | |
| ) t ON e.mgr=t.empno; |

外连接的注意事项
- 内连接只保留符合条件的记录,所以查询条件写在
ON子句和WHERE子句中的效果是相同的。 - 但是外连接里,条件写在
WHERE子句里,不符合条件的记录是会被过滤掉的,而不是保留下来。


ON子句无论成立还是不成立,里面的值会都会被保留- 写在
WHERE里面会被过滤掉。


| SELECT | |
| e.empno,e.ename,d.dname | |
| FROM t_emp e LEFT JOIN t_dept d | |
| ON e.deptno=d.deptno | |
| WHERE e.deptno=10 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZkeqのCoding日志!
评论





