硬查出来了,这样写有哪些问题?老师讲解一下
来源:4-6 数据操作语言:表连接查询(三)
慕数据3515280
2023-03-26 10:23:14
SELECT e2.*, e1.ename AS mgrname,e1.dname AS mgrdname FROM ( SELECT e.empno, e.ename, d.dname, (e.sal+IFNULL(e.comm,0))AS income, s.grade, DATEDIFF(NOW(),e.hiredate)/365 AS year,e.mgr FROM (t_emp e LEFT JOIN t_dept d ON e.deptno = d.deptno) JOIN t_salgrade s ON e.sal BETWEEN s.losal AND s.hisal ) AS e2 JOIN (SELECT empno, ename, dname FROM t_emp JOIN t_dept ON t_emp.deptno = t_dept.deptno) e1 ON e2.mgr = e1.empno
1回答
好帮手慕小蓝
2023-03-26
同学你好,仅从语句看,并没有太大的问题。在书写SQL语句时,不同的人会有不同的思路,所以书写出来的语句也不相同。除了课程中明确的子查询语句会拖慢效率之外,其他的并不会对效率产生太大的影响。
不过在关联次数上,关联的次数越少,确实会有效的提升运行效率。所以在关联之前,如果可以理清思路,书写语句时也会省力很多,写出的语句也会简洁和高效。
综上,同学的实现方式本身并没有太大的问题,但是建议同学多尝试一下其他的实现方式。
祝学习愉快~
相似问题