티스토리 뷰

Developer

[DBMS] DBMS 별 rownum 사용법.

rocksea 2013. 11. 8. 18:47

DBMS별 rownum사용법.

개발을 하다보면 Paging처리나 그외 정렬의 문제로 Rownum을 써야 하는 상황이 오게 됩니다.

Oracle을 사용 해 본 사람이라면 일상적으로 사용하겠지만 그 외 DBMS만 사용해본 개발자 라면

Rownum이 생소하게 느껴 질 수 도 있기 떄문입니다.

(Paging 구현시 LIMIT 와 OFFSET 으로 구현이 가능하기 떄문에.)

그래서 자주쓰는 DBMS에 rownum사용법에 대해 정리 해 보았습니다.


User Table

name 

company_no 

홍길동 

신길동 

심길동 

고길동 


- 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

댓글