SQL Tip: 컬럼의 최대값에 해당하는 행을 효율적으로 필터링
MySQL 데이터베이스에서는 레코드 그룹에서 특정 컬럼의 최대값에 해당하는 행을 추출해야 하는 경우가 종종 있습니다. 이 문서에서는 두 가지 주요 방법을 설명합니다.
방법 1: 하위 쿼리 및 연결
이 방법은 하위 쿼리를 사용하여 각 그룹화의 최대값을 결정합니다. 하위 쿼리는 그룹 식별자별로 행을 그룹화하고 지정된 열의 최대값을 반환합니다. 그런 다음 그룹화 식별자와 최대값을 조인 조건으로 사용하여 결과를 기본 테이블과 조인합니다.
예:
<code class="language-sql">SELECT a.id, a.rev, a.contents FROM YourTable a INNER JOIN ( SELECT id, MAX(rev) rev FROM YourTable GROUP BY id ) b ON a.id = b.id AND a.rev = b.rev</code>
방법 2: 자체 연결 및 필터링
또 다른 방법은 왼쪽 외부 조인을 사용하여 기본 테이블 자체를 조인하는 것입니다. 그룹화 식별자에는 조인 조건이 적용되며 조인의 왼쪽과 오른쪽 값을 비교하기 위한 추가 조건이 추가됩니다. 필터는 오른쪽에 해당 행이 없는 행(즉, 가장 큰 값이 있는 행)만 결과에 포함되도록 합니다.
예:
<code class="language-sql">SELECT a.* FROM YourTable a LEFT OUTER JOIN YourTable b ON a.id = b.id AND a.rev < b.rev WHERE b.id IS NULL;</code>
요약
두 방법 모두 동일한 결과를 제공하며 ANSI SQL 표준을 준수합니다. 또한 상대적으로 성능 친화적이지만 실제 성능은 데이터베이스 시스템, 스키마 디자인 및 인덱스 존재 여부에 따라 달라집니다. 특정 시나리오에 가장 적합한 솔루션을 결정하려면 두 가지 접근 방식을 모두 벤치마킹하는 것이 좋습니다.
위 내용은 SQL을 사용하여 열에서 최대 값으로 행을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!