2011-07-28 6 views
1

테이블에서 최상위 -n 값을 반환하는 쿼리가 있으며 정상적으로 작동합니다. 다음은 사용중인 쿼리의 단순화 된 버전입니다.SQL에서 중복을 포함하여 가장 높은 n 값 가져 오기

SELECT Series FROM SeriesScores 
     ORDER BY Series DESC LIMIT 0,n 

여기서 n은 쿼리를 호출하는 메서드의 매개 변수입니다. 물론 목록을 좁히는 다른 기준이 있지만이 경우에는 관련이 없다고 생각합니다.

이 쿼리의 문제점은 n 번째 결과와 동일한 경우 n + 1 번째 결과를 반환하지 않는다는 것입니다.

n = 1 인 경우 MAX를 사용하고 자체적으로 테이블에 조인하는 다른 쿼리를 사용하여 최대 값을 갖는 모든 사람을 직렬로 반환하지만 다른 n 값에 대해 뭔가를 파악할 수는 없습니다.

답변

1

은 다음을 시도해 볼 수도 있습니다 : 그것은 완벽하게 작동

SELECT s1.id, s1.series FROM SeriesScores s1 
INNER JOIN 
    (SELECT DISTINCT series FROM SeriesScores ORDER BY series DESC LIMIT 0, n) as s2 
    ON s1.series = s2.series 
+0

, 감사합니다! 도와 주셔서 정말 고맙습니다. –

+0

당신은 환영보다 더 있습니다 :) –