"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL의 각 그룹에서 최대 값으로 행을 선택하는 방법은 무엇입니까?

MySQL의 각 그룹에서 최대 값으로 행을 선택하는 방법은 무엇입니까?

2025-02-26에 게시되었습니다
검색:130

How to Select the Row with the Maximum Value from Each Group in MySQL?

식별 된 여러 버전의 데이터를 나타내는 행이있는 테이블이있는 시나리오를 고려하십시오. ID와 version_id 열로. 목표는 각 고유 한 ID에 대해 가장 높은 version_id로 행을 검색하는 것입니다. 순서별로 그룹을 사용하는 직관적 인 접근 방식은 원하는 결과를 제공하지 못하지만 MySQL 은이 쿼리에 대한 몇 가지 효율적인 솔루션을 제공합니다. :

max 기반 그룹화 :

select * (SELECT ID, max (version_id) as as max_version_id as table group by id) subquery에서 subquery.id = table.id 및 subquery.max_version_id = table.version_id;

에서 테이블에 가입하십시오. 그런 다음 기본 쿼리는 원래 테이블에서 해당 행을 검색하기 위해 내부 조인을 수행합니다.

상관 관계 서브 쿼리 :
SELECT *
FROM (SELECT id, MAX(version_id) AS max_version_id FROM table GROUP BY id) AS subquery
JOIN table ON subquery.id = table.id AND subquery.max_version_id = table.version_id;

t1을 선택하십시오.* T1로 테이블에서 여기서 t1.version_id = (id = t1.id);

테이블에서 max (version_id)를 선택하십시오.이 접근법은 상관 된 서브 쿼리를 사용하여 각 행의 version_id를 ID 그룹 내 최대 값과 비교합니다. 기본 쿼리는 조건을 충족시키는 행만 선택합니다.

창 함수 :
SELECT *
FROM (SELECT id, MAX(version_id) AS max_version_id FROM table GROUP BY id) AS subquery
JOIN table ON subquery.id = table.id AND subquery.max_version_id = table.version_id;

id, max (version_id)를 선택하여 max_version_id, field1로 선택합니다. , field2 테이블에서 id로 주문;

창 함수는 각 ID 파티션 내에서 최대 version_id를 계산하여 대체 접근 방식을 제공합니다. Over Clause는 분할 기준을 지정하고 순서 별 절편은 각 파티션 내에서 행을 주문하도록합니다. 그룹화 및 주문 작업의 뉘앙스를 이해함으로써 데이터베이스 사용자는 쿼리를 개선하여 복잡한 데이터 구조에서 의미있는 데이터를 추출 할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3