집 >데이터 베이스 >MySQL 튜토리얼 >데이터베이스에서 그룹당 최고 또는 최저 레코드를 효율적으로 검색하려면 어떻게 해야 합니까?
문제 설명
최고 기록을 효율적으로 검색하는 방법 또는 다른 그룹에 의해 정의된 각 그룹 내의 특정 필드에 대한 가장 낮은 값 field?
왼쪽 외부 조인을 사용한 솔루션
각 GroupId 내의 OrderField 필드에 대해 가장 높은 값을 가진 레코드를 검색하려면 다음 쿼리를 사용합니다.
SELECT t1.* FROM `Table` AS t1 LEFT OUTER JOIN `Table` AS t2 ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField WHERE t2.GroupId IS NULL ORDER BY t1.OrderField;
가입 혜택 접근 방식
대안
데이터가 작거나 사용 중인 데이터베이스 엔진의 특정 구현이 조인에 대해 제대로 최적화되지 않은 경우 다음과 같은 대안을 고려할 수 있습니다. as:
방법 사용의 비효율성 @Rank 변수
@Rank 변수를 사용하여 설명한 방법은 원래 작성된 대로 @Rank 변수가 첫 번째 테이블을 처리한 후 0으로 재설정되지 않기 때문에 올바르게 작동하지 않습니다. 이 문제를 해결하려면 두 번째 테이블을 처리하기 전에 다른 파생 테이블을 추가하여 @Rank를 0으로 재설정해야 합니다. 그러나 이 접근 방식은 조인 접근 방식에 비해 여전히 비효율적입니다.
위 내용은 데이터베이스에서 그룹당 최고 또는 최저 레코드를 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!