[DBMS] DBMS 별 rownum 사용법.
DBMS별 rownum사용법.
개발을 하다보면 Paging처리나 그외 정렬의 문제로 Rownum을 써야 하는 상황이 오게 됩니다.
Oracle을 사용 해 본 사람이라면 일상적으로 사용하겠지만 그 외 DBMS만 사용해본 개발자 라면
Rownum이 생소하게 느껴 질 수 도 있기 떄문입니다.
(Paging 구현시 LIMIT 와 OFFSET 으로 구현이 가능하기 떄문에.)
그래서 자주쓰는 DBMS에 rownum사용법에 대해 정리 해 보았습니다.
User Table
name |
company_no |
홍길동 |
4 |
신길동 |
2 |
심길동 |
3 |
고길동 |
1 |
- ORACLE
일단 Oracle에선 너무나 기본적으로 사용하기 떄문에 많은 분들이 아실거라 생각 됩니다만 정리 하는 차원에서 설명합니다.
SELECT name, ROW_NUMBER() OVER (ORDER BY company_no ASC) no
FROM USER;
OR
SELECT ROWNUM, a.* FROM ( SELECT * from USER order bu company_no ASC ) a
- PostgreSQL
oracle과 같지만 컬럼명 rownum을 단독으로 사용 할 순 없다.
SELECT name, ROW_NUMBER() OVER (ORDER BY company_no ASC) no
FROM USER;
- MySQL
SELECT @RNUM := @RNUM + 1 AS NO, a.*
FROM
( SELECT * FROM user ORDER BY company_no ASC ) a, ( SELECT @RNUM := 0 ) b
결과
no |
name |
company_no |
1 |
고길동 |
1 |
2 |
신길동 |
2 |
3 |
심길동 |
3 |
4 |
고길동 |
4 |
다른 DBMS도 테스트 후 이곳에 추가 해 보려 합니다.
.by rocksea