2012-05-08 5 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) 

아무도 도와 줄 수 있습니까?

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

그냥 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

당신은 또한 할 수보십시오.) 여기서 RANK = 5;

당신이 테라 데이타 DB를 사용하는 경우, 당신은 문 자격을 사용할 수 있습니다

선택 *는 에서 (ID 오름차순으로 순서) = 5 이상 ROW_NUMBER()를 자격;

+0

감사합니다. – Jhilom

0

선택 * ( 에서를 선택 *, ID 오름차순으로 (순서)를 통해 ROW_NUMBER()를 A로부터 RANK 같이

+0

형식을 사용하십시오. – Shawn

+0

감사합니다 Shawn ... 앞으로 포맷팅을 사용합니다. – Leo

관련 문제