【发布时间】:2013-02-18 10:42:58
【问题描述】:
我想从雇员表中打印第 n 个最高工资。
查询是:
SELECT *
FROM emp E1
WHERE
(n-1) = (SELECT count(distinct(E2.salary))
FROM emp E2 Where
E2.salary< E1.salary)
ORDER BY
E1.salary ASC
虽然效果很好,但我无法解释它是如何工作的。有人能说明一下吗?
【问题讨论】:
-
我看起来很奇怪这个
(n-1)为什么会有 -
这里缺少一些东西,例如变量n。
-
应该是
n而不是n-1 -
这永远行不通,我不知道他说它是如何工作的,
-
就目前而言,它将返回第 n 个最低的工资记录,而不是第 n 个最高的工资记录;否则,它应该可以工作。