簡體   English   中英

誰能告訴我,此查詢的工作原理?

[英]Can anyone tell me, How this query works?

誰能解釋這個查詢的工作原理,並從薪水表中找到第n個最高薪水。

SELECT salary FROM salary_master s1 
WHERE (n-1) = (SELECT COUNT(*) FROM salary_master WHERE salary > s1.salary)

我的意思是,此查詢將遍歷所有值?

幫我。

找不到第n個最高薪水,但這將:

SELECT salary
FROM salary_master
ORDER BY salary DESC
OFFSET n
LIMIT 1

不,這不會如此迭代 這仍然是正常查詢。

如您所見,它計算子查詢中大於當前行條目的所有薪水。

因此,如果您是最高收入者,您的薪水不應高於您的薪水,這就是-1的原因。

子查詢將計算“多少元素的薪水比當前元素大”。 然后,您的主查詢將檢查表中的當前元素是否具有薪水更大的n-1個元素。

例如,對於n = 5,查詢將搜索一個元素,其中其他4個元素的薪水更高。 因此它將找到第五高。

但是,這不是最好的方法。 考慮使用ORDER BY和LIMIT ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM