SQL 데이터베이스를 처리할 때 테이블에서 상위 n개 최대값을 검색해야 하는 경우가 많습니다. 이는 가장 자주 발생하는 카테고리 또는 최고 성능의 제품을 찾는 데 특히 유용할 수 있습니다.
MySQL에서 테이블에서 최대값을 선택하는 기본 접근 방식은 열을 그룹화하고 각 항목 내에서 가장 높은 값을 식별하는 것입니다. 그룹. 그러나 상위 n개 최대값을 선택하려면 다른 접근 방식이 필요합니다.
테이블에서 상위 n개 최대값을 선택하는 한 가지 방법은 두 개의 UNION 쿼리를 결합하는 것입니다. 첫 번째 쿼리는 각 그룹의 최대값을 식별하고, 두 번째 쿼리는 처음에 식별된 최대값을 제외하고 각 그룹의 다음으로 높은 값을 선택합니다.
SELECT max(column1) m FROM table t GROUP BY column2 UNION SELECT max(column1) m FROM table t WHERE column1 NOT IN (SELECT max(column1) WHERE column2 = t.column2)
이 접근 방식은 원하는 수만큼 검색하도록 사용자 정의할 수 있습니다. 두 번째 쿼리에서 LIMIT 절을 조정하여 최고 최대 값을 찾습니다. 예를 들어 상위 2개의 최대값을 선택하려면 LIMIT 절은 "LIMIT 2,1"이 됩니다.
MySQL 테이블에서 상위 n개의 최대값을 선택하는 또 다른 방법은 파티션에 대한 순위를 시뮬레이션하는 것입니다. 이 기술에는 그룹 내의 각 값에 순위를 할당하는 복잡한 하위 쿼리가 포함됩니다. 그런 다음 결과를 필터링하여 상위 n개 값을 검색할 수 있습니다.
다음은 이 접근 방식을 사용하는 쿼리의 예입니다.
SELECT t.* FROM (SELECT grouper, (SELECT val FROM table li WHERE li.grouper = dlo.grouper ORDER BY li.grouper, li.val DESC LIMIT 2,1) AS mid FROM ( SELECT DISTINCT grouper FROM table ) dlo ) lo, table t WHERE t.grouper = lo.grouper AND t.val > lo.mid
이 기술은 약간 더 복잡하지만 사용할 수 있습니다. 테이블의 모든 열에 대해 상위 n개 최대값을 선택합니다.
이러한 접근 방식 중 하나를 구현할 때는 데이터 분포와 필요한 상위 최대값 수를 고려하는 것이 중요합니다. 다수의 최고 최대값을 선택하면 대규모 데이터 세트의 성능에 큰 영향을 미칠 수 있습니다.
위 내용은 MySQL 테이블에서 상위 N개의 최대값을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!