>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 상위 N개의 최대값을 선택하는 방법: N 행만 반환하거나 동점을 포함합니까?

MySQL에서 상위 N개의 최대값을 선택하는 방법: N 행만 반환하거나 동점을 포함합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 14:41:03560검색

How to Select the Top N Maximum Values in MySQL: Return Only N Rows or Include Ties?

MySQL: 상위 N개의 최대값 선택

특정 데이터베이스에서 가장 높은 값을 가진 상위 N개 행을 검색하려고 할 때 종종 혼란이 발생합니다. 열. 문제는 상위 N개 행만 반환할지 아니면 동일한 최대값을 공유하는 경우 추가 행을 포함할지 여부입니다.

전자를 달성하려면 다음 쿼리로 충분합니다.

SELECT *
FROM t
ORDER BY value DESC
LIMIT N

이것은 쿼리는 다른 행의 최대값이 동일한지 여부에 관계없이 상위 N개 행만 반환되도록 합니다.

그러나 최대값이 동일한 행을 포함해야 하는 경우에는 더 복잡한 쿼리가 필요합니다.

SELECT *
FROM t
JOIN (
  SELECT MIN(value) AS cutoff
  FROM (
    SELECT value
    FROM t
    ORDER BY value
    LIMIT N
  ) tlim
) tlim
ON t.value >= tlim.cutoff;

또는 쿼리를 단순화할 수 있습니다.

SELECT *
FROM t
JOIN (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
) tlim
ON t.value = tlim.value;

마지막으로 ANY 함수를 사용하는 또 다른 방법이 있지만 MySQL과의 호환성은 다를 수 있습니다.

SELECT *
FROM t
WHERE t.value >= ANY (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
)

이 접근 방식에는 최대값이 동일한 행도 포함되어 문제에 대한 개념적으로 명확한 솔루션을 제공합니다.

위 내용은 MySQL에서 상위 N개의 최대값을 선택하는 방법: N 행만 반환하거나 동점을 포함합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.