关于课后作业中使用左链接和不使用左连接结果相同的问题

来源: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

这里在和工资等级表链接的时候未使用左连接


相关截图:

https://img.mukewang.com/climg/6150311309b65eb911250326.jpg


使用左连接:

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

这里在和工资等级表链接的时候使用了左连接

相关截图:

https://img.mukewang.com/climg/6150315b095e60c110550310.jpg

发现两者结果没有不同呀,请问老师为什么一定要用左连接呢

写回答

1回答

好帮手慕小小

2021-09-26

同学你好,可能是表中数据问题使得两次运行结果恰巧一致,但不建议省略left。

left  join表示左外连接-->以左表为主表所有数据全部展示,右表(副表)中无匹配的数据时字段值自动补NULL。

而当去掉则表示inner  join内连接(内连接可以不写inner关键字)-->内连接是结果集中只保留符合条件的记录。

举例:

例如将其中一条数据的sal修改为null

https://img.mukewang.com/climg/615040c2090a97c006200335.jpg

使用左外连接LEFT JOIN的执行结果如下:

https://img.mukewang.com/climg/615041260923612a14350923.jpg

去掉left的执行结果如下:

https://img.mukewang.com/climg/6150418f0915014a14150932.jpg

祝学习愉快~

0

0 学习 · 9886 问题

查看课程