2014-05-11 64 views
-2
select top 1 sal from(SELECT DISTINCT TOP 6 sal 
FROM salary 
ORDER BY sal desc) a order by sal 

我是新來的SQL Server任何一個可以告訴我,這個查詢是如何找到從表中工資第六屆最高 薪水,我可以理解,內部查詢是找到前6名的薪水並按降序安排,但我無法理解的事情是,頂端1應該給予最高的薪水,從降序排列的6個工資如何返回最後(底部)工資請問這個查詢的工作

+0

TOP與MAX不一樣。 TOP按順序進行。 – tuespetre

+0

top 1如何找到第6個最高應該找到最高薪水以及在此查詢中「a」的作用 – Ashu

回答

1

檢查order by最後,它默認上升,這意味着從最高的前6名工資中獲得最低工資。

a是SQL Server在從子查詢中選擇時需要的。這裏沒有意義。

A「聰明」的查詢

SELECT sal 
FROM salary 
ORDER BY sal 
OFFSET 5 ROWS FETCH 1 ROW ONLY; 
+0

感謝我現在瞭解 – Ashu

1

你怎麼知道內部查詢以降序返回前6名的薪水嗎?

ORDER BY sal desc 

DESC關鍵字將按降序排列....默認情況下,它按升序排列。外部查詢有一個ORDER BY而不是ORDER BY DESC

因此,它返回內部查詢返回的前6名工資中最低的工資。

+0

謝謝,我明白了 – Ashu