老师,想问下2个sql哪个更好点?虽然都能出结果,效率差距大吗?

来源:3-7 实战:表的外连接

慕仙9331815

2020-07-15 10:38:09

#查询每名员工的编号、姓名、部门、月薪、工资等级、工龄、上司编号、上司姓名、上司部门
SELECT e.empno,e.ename,d.dname,e.sal + IFNULL(e.comm,0),s.grade,FLOOR(DATEDIFF(NOW(),e.hiredate)/365),e2.empno,e2.ename,d2.dname
FROM t_emp e
LEFT JOIN t_dept d ON e.deptno = d.deptno
LEFT JOIN t_salgrade s ON (e.sal + IFNULL(e.comm,0)) BETWEEN s.losal AND s.hisal
LEFT JOIN t_emp e2 ON e.mgr = e2.empno
LEFT JOIN t_dept d2 ON e2.deptno = d2.deptno
;
SELECT e.empno,e.ename,d.dname,e.sal + IFNULL(e.comm,0),s.grade,FLOOR(DATEDIFF(NOW(),e.hiredate)/365),t.empno,t.ename,t.dname
FROM t_emp e
LEFT JOIN t_dept d ON e.deptno = d.deptno
LEFT JOIN t_salgrade s ON (e.sal + IFNULL(e.comm,0)) 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


写回答

1回答

好帮手慕笑蓉

2020-07-15

同学,你好。这两个sql语句在效率是差不多的,都是可以的,相比之下,第一个sql语句逻辑比较简单没有其他的select查询语句,所以可以选择第一个sql语句

如果解决了你的疑惑,请采纳,祝学习愉快~ 

0

0 学习 · 2669 问题

查看课程