MySQL에서 그룹별로 행 번호를 매기는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-11 21:52:03
원래의
362명이 탐색했습니다.

How to Number Rows by Group in MySQL?

MySQL에서 그룹별로 행 번호 지정

다음 테이블 구조를 고려하세요.

id crew_id amount type
1 4 1000 AUB
2 4 1500 AUB
3 5 8000 CA
4 4 1000 CA
5 5 1000 AUB
6 6 3000 AUB
7 4 2000 CA
8 6 3500 AUB
9 4 5000 AUB
10 5 9000 CA
11 5 1000 CA

결과 집합을 생성하려면 Crew_id와 유형의 각 조합에 대한 행 번호를 포함하는 경우 다음을 실행합니다. 쿼리:

SELECT    id,
              crew_id,
              amount,
              type,
             ( 
                CASE type 
                WHEN @curType 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curType := type END
              ) + 1 AS rank
    FROM      Table1 p,
              (SELECT @curRow := 0, @curType := '') r
   ORDER BY  crew_id,type asc;
로그인 후 복사

설명:

  • 쿼리는 먼저 두 개의 사용자 변수 @curRow 및 @curType을 초기화하여 현재 행 번호와
  • 메인 쿼리에서 CASE 문은 type의 현재 값이 일치하는지 확인합니다. @curType에 이전에 저장된 값입니다. 일치하면 @curRow를 1씩 증가시킵니다. 그렇지 않으면 @curRow를 1로 재설정하고 @curType을 새 값으로 업데이트합니다.
  • 표현식(@curRow := @curRow 1) 1은 증가된 또는 @curRow의 값을 1로 재설정하여 행 번호를 생성합니다.
  • 쿼리는rew_id순으로 정렬되고 유형이 적절하게 그룹화됩니다. 행에 번호를 매깁니다.

출력:

id crew_id amount type row_number
1 4 1000 AUB 1
2 4 1500 AUB 2
9 4 5000 AUB 3
4 4 1000 CA 1
7 4 2000 CA 2
5 5 1000 AUB 1
3 5 8000 CA 1
10 5 9000 CA 2
11 5 1000 CA 3
6 6 3000 AUB 1
6 6 3000 AUB 2

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

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