728x90

오라클에서는 RNUM()을 통해 쉽게 순번에 맞는 행 번호를 출력할 수 있었다.

이번에 JSP로 프로젝트를 진행하면서 MariaDB를 사요하게 되었고 MariaDB에서도 행 번호를 출력할 수 있는 방법에 대해 정리해본다.

 

MariaDB에서는 ROW_NUMBER() OVER() 함수를 사용하면 된다.

OVER 안에는 PARTITION BY와 OREDER BY를 사용할 수 있다.

  • PARTITION BY : 결과 집합을 분할하는 데 사용하는 열을 지정한다. PARTITION BY를 지정하지 않으면 모든 행이 단일 그룹으로 취급된다.
  • ORDER BY : 지정된 파티션 내에서 각 행의 고유 ROW_NUMBER가 할당되는 순서를 결정한다.

 

예제

SELECT 
  ROW_NUMBER() OVER(ORDER BY name ASC) AS row_num,
  name, sex
FROM member
WHERE member_id < 5;
row_num name sex
1 김찬빈 MALE
2 나찬빈 FEMALE
3 동찬빈 FEMALE
4 지찬빈 FEMALE

 

SELECT 
  ROW_NUMBER() OVER(ORDER BY name DESC) AS row_num,
  name, sex
FROM member
WHERE member_id < 5;
row_num name sex
4 김찬빈 MALE
3 나찬빈 FEMALE
2 동찬빈 FEMALE
1 지찬빈 FEMALE

 

SELECT 
  ROW_NUMBER() OVER(PRTITION BY sex ORDER BY name ASC) AS row_num,
  name, sex
FROM member
WHERE member_id < 5;
row_num name sex
1 김찬빈 MALE
1 나찬빈 FEMALE
2 동찬빈 FEMALE
3 지찬빈 FEMALE

 

참조

https://learn.microsoft.com/ko-kr/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017 

 

728x90
Cold Bean