답변:
이를 위해 당신은 한계 를 사용할 수 있습니다
select *
from scores
order by score desc
limit 10
성능이 중요한 경우 (;-가 아닌 경우) 점수에 대한 색인을 찾으십시오.
버전 8.4부터 표준 ( SQL : 2008 )을 사용할 수도 있습니다.fetch first
select *
from scores
order by score desc
fetch first 10 rows only
@Raphvanns가 지적했듯이 이것은 first 10 rows
문자 그대로 당신에게 줄 것 입니다. 중복 값을 제거하려면 distinct
행 을 선택해야 합니다. 예 :
select distinct *
from scores
order by score desc
fetch first 10 rows only
fetch first X rows only
내가 찾던 해답입니다-먼 미래에 감사합니다!
LIMIT 절 을 사용 ORDER BY
하여 DESC
끝 순서로 찾고있는 것 같습니다 .
SELECT
*
FROM
scores
ORDER BY score DESC
LIMIT 10
물론 SELECT *
성능에 심각한 영향을 줄 수 있으므로주의해서 사용하십시오.
상위 10 개 값에 관계가있는 경우 제공된 답변 이 포함 된 상위 10 개 값 이 아니라 상위 10 개 행만 가져옵니다 . 예 : 상위 5 개 값이 10, 11, 12, 13, 14, 15이지만 데이터에 10, 10, 11, 12, 13, 14, 15가 포함 된 경우 10, 10, 11, 12, 13, 당신의 상위 5로 14LIMIT
다음은 동점이있는 경우 10 개 이상의 행을 반환하지만 some_value_column
기술적으로 상위 10 개의 모든 행을 얻는 솔루션입니다 .
select
*
from
(select
*,
rank() over (order by some_value_column desc) as my_rank
from mytable) subquery
where my_rank <= 10
explain analyze
?