Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL ROW_NUMBER() 함수란? 윈도우 함수로 행 번호 부여하는 방법

ROW_NUMBER()는 MySQL 8.0 버전부터 도입된 기능으로, 대표적인 윈도우 함수(Window Function) 중 하나입니다. 이 함수는 쿼리 결과의 각 행에 순차적인 일련번호를 부여할 때 사용됩니다. 이해를 돕기 위해 CREATE 명령어로 테이블을 먼저 만들어 보겠습니다.

테이블 생성하기

mysql> CREATE table rowNumberDemo
-> (
-> FirstName varchar(100)
-> );
Query OK, 0 rows affected (0.92 sec)

레코드 삽입하기

다음으로 INSERT 문을 사용하여 샘플 데이터를 입력합니다.

mysql> INSERT into rowNumberDemo values('john');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into rowNumberDemo values('john');
Query OK, 1 row affected (0.29 sec)

mysql> INSERT into rowNumberDemo values('Bob');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into rowNumberDemo values('Smith');
Query OK, 1 row affected (0.17 sec)

저장된 데이터 확인하기

SELECT 문을 활용하면 테이블에 저장된 모든 레코드를 조회할 수 있습니다.

mysql> SELECT * from rowNumberDemo;

실행 결과는 다음과 같습니다.

+-----------+
| FirstName |
+-----------+
| john      |
| john      |
| Bob       |
| Smith     |
+-----------+
4 rows in set (0.00 sec)

ROW_NUMBER()로 행 번호 부여하기

이제 ROW_NUMBER() 함수를 사용하여 모든 레코드에 증가하는 순번을 부여해 보겠습니다. OVER 절 안에 ORDER BY를 함께 작성하면 정렬 기준에 따라 번호가 매겨집니다.

mysql> SELECT row_number() over ( order by firstName) RowNumberSqeuence,FirstName from rowNumberDemo
-> order by FirstName;

실행 결과는 아래와 같습니다.

+-------------------+-----------+
| RowNumberSqeuence | FirstName |
+-------------------+-----------+
| 1                 | Bob       |
| 2                 | john      |
| 3                 | john      |
| 4                 | Smith     |
+-------------------+-----------+
4 rows in set (0.00 sec)

출력 결과를 보면 이름을 기준으로 오름차순 정렬한 상태에서 각 레코드에 1부터 시작하는 고유한 순번이 차례대로 부여된 것을 확인할 수 있습니다. 이처럼 ROW_NUMBER()는 결과 집합 내에서 각 행의 순서를 명확하게 식별해야 하는 경우, 예를 들어 페이징 처리나 순위 계산 등에 유용하게 활용됩니다.