关于课后作业中使用左链接和不使用左连接结果相同的问题
来源:4-7 数据操作语言:表连接查询(四)
应该怎么爱
2021-09-26 16:38:08
不使用左连接:
select e1.empno,e1.ename,d.dname,e1.sal,s.grade,floor(datediff(now(),e1.hiredate)/365),
e.ename,e.empno ,d1.dname
from t_emp e1 left join t_dept d on e1.deptno = d.deptno
join t_salgrade s on e1.sal between s.losal and s.hisal
left join t_emp e on e.empno = e1.mgr#这里e的员工编号等于e1的上司编号,所以
#e表是上司表
left join t_dept d1 on e.deptno = d1.deptno
这里在和工资等级表链接的时候未使用左连接
相关截图:
使用左连接:
select e1.empno,e1.ename,d.dname,e1.sal,s.grade,floor(datediff(now(),e1.hiredate)/365),
e.ename,e.empno ,d1.dname
from t_emp e1 left join t_dept d on e1.deptno = d.deptno
left join t_salgrade s on e1.sal between s.losal and s.hisal
left join t_emp e on e.empno = e1.mgr#这里e的员工编号等于e1的上司编号,所以
#e表是上司表
left join t_dept d1 on e.deptno = d1.deptno
这里在和工资等级表链接的时候使用了左连接
相关截图:
发现两者结果没有不同呀,请问老师为什么一定要用左连接呢
1回答
好帮手慕小小
2021-09-26
同学你好,可能是表中数据问题使得两次运行结果恰巧一致,但不建议省略left。
left join表示左外连接-->以左表为主表所有数据全部展示,右表(副表)中无匹配的数据时字段值自动补NULL。
而当去掉则表示inner join内连接(内连接可以不写inner关键字)-->内连接是结果集中只保留符合条件的记录。
举例:
例如将其中一条数据的sal修改为null
使用左外连接LEFT JOIN的执行结果如下:
去掉left的执行结果如下:
祝学习愉快~
相似问题