MySQL 각 그룹의 전면 N 라인 데이터를 효율적으로 얻습니다
문제 설명 :
데이터베이스 쿼리에서 각 데이터 그룹의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!