집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 상위 N개의 최대값을 선택하는 방법: N 행만 반환하거나 동점을 포함합니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!