我正在尝试使用 MySQL/SQL 查询和复杂查询的学习教程。
下面是一个运行良好的查询,但结果集无法理解。
查询从每个部门检索“2”个最高薪员工。
SELECT deptno, empno, sal
FROM emp e
WHERE
2 > ( SELECT COUNT(e1.sal)
FROM emp e1
WHERE e.deptno = e1.deptno AND e.sal < e1.sal )
ORDER BY 1,3 DESC;
但是我无法理解这个2 >和Order by 1,3在查询中的作用。?
为了理解查询,我分别运行了 WHERE Cause Query,如下所示:
SELECT COUNT(e1.sal)
FROM emp e1
WHERE e.deptno = '1';
上面的查询向我返回了值为“1”的 deptno 计数。
所以这意味着每个部门都会被计算在内!!
我不确定到底发生了什么e.sal < e1.sal
?它是递归运行的吗?计算最高薪员工??
有人可以帮助我理解查询!
如果我能理解上面的逻辑,我就能理解下面查询的逻辑:
4th Top Salary of all the employees:
SELECT DEPTNO, ENAME, SAL
FROM EMP A
WHERE
3 = (SELECT COUNT(B.SAL) FROM EMP B
WHERE A.SAL < B.SAL) ORDER BY SAL DESC;
很抱歉没有提供小提琴..