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 중국어 웹사이트의 기타 관련 기사를 참조하세요!