2012-05-08 44 views
-1

我是SQL新手,我想在不使用LIMIT的情況下獲取第5個最高值。這是我正在嘗試的代碼,但它無法正常工作。它顯示的是第5個最低值,而不是第5個最高值。在不使用LIMIT的情況下選擇第5個最高值

SELECT a . * FROM user AS a 
WHERE 5 = 
(SELECT count(DISTINCT b.id) FROM user AS b WHERE b.id >= a.id ORDER BY a.id DESC) 

任何人都可以幫助我嗎?

+0

只需4小時前複製到http://stackoverflow.com/questions/10492357/sql-query-to-find-nth-highest-salary! – fankt

+1

爲什麼不使用LIMIT? – gbn

回答

0

試試這個

SELECT a . * 
FROM user AS a 
WHERE 5 = (
SELECT count(DISTINCT b.id) 
FROM user AS b 
WHERE a.id >= b.id ORDER BY a.id) 
4

你也可以這樣做:

SET @nth := 5; 
SELECT 
    a.* 
FROM jos_modules AS a 
WHERE @nth = ( 
    SELECT 
     COUNT(b.id) 
    FROM user AS b 
    WHERE 
     a.id >= b.id 
); 
+0

感謝它的工作 – Jhilom

0

SELECT * FROM( 選擇*,ROW_NUMBER()以上(按id升序排列)爲從RANK 。 )其中RANK = 5;

如果您使用的是Teradata的數據庫,你可以使用合格聲明:

SELECT * FROM一個 資格ROW_NUMBER()以上(按id升序排列)= 5;

+0

請使用格式。 – Shawn

+0

謝謝肖恩......將會繼續使用格式 – Leo

相關問題