반응형
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 를 사용하면 된다.
반응형
'IT > Database' 카테고리의 다른 글
[Mysql] 계층형 쿼리 사용법 (WITH RECURSIVE) (16) | 2024.11.03 |
---|---|
[Mysql] WITH 절 구문 (16) | 2024.11.02 |
[Mysql] [Error] ERROR 1426: Too-big precision 10 specified for 'column'. Maximum is 6. (13) | 2024.10.08 |
[Mysql] can't create test file lower-test (11) | 2024.10.04 |
[Mysql] 테이블 정의서 만들기 (13) | 2024.07.18 |
댓글