> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 그룹당 상위 N개 행만 검색하는 방법은 무엇입니까?

MySQL에서 그룹당 상위 N개 행만 검색하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-25 11:57:10
원래의
867명이 탐색했습니다.

MySQL 각 그룹의 전면 N 라인 데이터를 효율적으로 얻습니다 How to Retrieve Only the Top N Rows per Group in MySQL?
문제 설명 :

데이터베이스 쿼리에서 각 데이터 그룹의 N- 로우 데이터 만 검색해야 할 수도 있습니다. 예를 들어, 데이터 세트에는 그룹 및 ID에 여러 줄의 그룹이 포함될 수 있습니다. 각 ID의 처음 5 개의 레코드를 표시하려면 결과를 필요한 수량으로 제한하기 위해 하나의 메소드를 구현해야합니다. 솔루션 : MySQL 8 이상의 버전에서는 row_number, Rank 또는 Dense_Rank 함수를 사용 하여이 목적을 달성 할 수 있습니다. 선택한 특정 함수는 "전면 N 라인"의 정확한 정의와 나란히 처리하는 방법에 따라 다릅니다. 다음은 이러한 함수에 의해 생성 된 결과의 세분입니다.

row_number :

각 그룹의 행의 시퀀스 번호를 1부터 시작합니다. 동일한 순위를 위반하여 동일한 순위를 동일한 값으로 제공하려면이 기능이 이상적입니다. 순위 : 각 그룹에서 행의 분포 순위는 동일한 순위로 이어집니다. 다른 순위에 우선 순위를 부여하면이 기능이 유용합니다.

dense_rank :

랭크와 유사하지만 조밀 한 순위를 할당하므로 순위 간에도 순위 사이에 차이가 없음을 의미합니다. 이 기능은 팔로우 -UP 라인이 유일한 순위가 있는지 확인하려는 경우 적용됩니다.

예 : 다음 쿼리는 row_number 함수를 사용하여 각 ID의 첫 5 줄을 반환하고 스코어링 순서에 따라 정렬합니다. 출력 :

이러한 함수를 사용하면 결과를 각 그룹의 전면 N 라인으로 효과적으로 제한하고 데이터가 필요합니다.

위 내용은 MySQL에서 그룹당 상위 N개 행만 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿