> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 ROW_NUMBER() 기능을 어떻게 얻을 수 있습니까?

MySQL에서 ROW_NUMBER() 기능을 어떻게 얻을 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2025-01-25 08:57:09
원래의
555명이 탐색했습니다.

How Can I Achieve ROW_NUMBER() Functionality in MySQL?

MySQL에서 ROW_NUMBER() 함수 시뮬레이션

SQL Server의 ROW_NUMBER() 함수는 지정된 파티션 내의 행에 순차적 번호를 할당할 수 있습니다. MySQL에는 정확히 동등한 기능이 없지만 유사한 기능을 달성할 수 있는 방법이 있습니다.

변수를 사용하여 줄 번호 매기기 구현

8.0 이전 MySQL 버전에서는 변수를 사용하여 파티션 내의 행 번호를 늘릴 수 있습니다. 다음 쿼리는 이 접근 방식을 보여줍니다.

<code class="language-sql">SELECT t.*, 
       @rownum := @rownum + 1 AS rank
  FROM YOUR_TABLE t, 
       (SELECT @rownum := 0) r</code>
로그인 후 복사

이 쿼리는 각 행에 일련 번호를 할당하고 @rownum 변수는 각 행에서 증가합니다.

여러 파티션 처리

파티션에 여러 열이 포함된 경우 여러 변수를 생성하고 파티션 열 중 하나의 값이 변경되면 이를 0으로 설정할 수 있습니다. 예를 들어 col1과 col2로 분할합니다.

<code class="language-sql">SELECT t.*, 
       @rownum_col1 := IF(@col1 = t.col1, @rownum_col1 + 1, 1) AS rank_col1,
       @rownum_col2 := IF(@col2 = t.col2, @rownum_col2 + 1, 1) AS rank_col2,
       @col1 := t.col1,
       @col2 := t.col2
  FROM YOUR_TABLE t, 
       (SELECT @rownum_col1 := 0, @rownum_col2 := 0, @col1 := '', @col2 := '') r
ORDER BY t.col1, t.col2;</code>
로그인 후 복사

참고: MySQL 8.0 이상 버전은 ROW_NUMBER() 함수를 기본적으로 지원하므로 행 번호 지정을 구현하는 보다 직접적인 방법을 제공합니다. 위의 코드는 다중 파티션 사례를 올바르게 처리하고 파티션이 변경될 때 줄 번호 카운터가 재설정되도록 수정되었습니다. 변수 할당 순서는 데이터를 읽는 순서에 따라 달라지므로 일관된 결과를 보장하기 위해 ORDER BY 절을 추가했습니다. IF 논리를 좀 더 명확하게 표현하기 위해 문장도 조정되었습니다.

위 내용은 MySQL에서 ROW_NUMBER() 기능을 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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