본문 바로가기
IT/Database

[Mysql] ROWNUM 사용

by 성준하이 2024. 10. 10.
반응형

Oracle이나 Mysql 등의 DBMS 에서 순번을 설정하기 위해 Rownum 을 종종 쓰곤 한다.

 

Mysql 에서 Rownum을 사용하기 위해서 쿼리를 짰었는데,

다른 Mysql 에서 사용해보니 syntax 에러가 발생하였다.

 

둘의 차이는 버전이 달랐다.

Mysql 5.x 버전과 Mysql 8.x 였다.

 

버전별로 Rownum 사용하는 예시 코드를 작성한다.

mysql 5.x SELECT
     @rownum := @rownum + 1 AS NUM,
     NAME
FROM
     TABLEA,
     (SELECT @rownum := 0) r
WHERE 
     1=1
ORDER BY 
     REGISTER_TIME DESC;
mysql 8.x SELECT
     ROW_NUMBER() OVER (ORDER BY ID ASC) AS NUM,
     NAME
FROM
     TABLEA
WHERE 
     1=1
ORDER BY 
     REGISTER_TIME DESC;

 

row_number() 함수가 8.0 이상에서 지원하기에 이하 버전에서는 가상 테이블 처럼 하나를 만들어서 사용해야한다.

 

정확히 말하면 8.0 이하일때는  5.x 를 사용하면 되고 그 이상일 경우에 8.x 를 사용하면 된다.

반응형

댓글