- ROWNUM
- Oracle에서 붙여주는 행번호 객체
- DBMS 마다 구현방법이 다르다.
- MySQL : LIMIT
- MS SQL server : TOP
- Oracle : ROWNUM
- DBMS 마다 구현방법이 다르다.
- 사용법
- SELECT ROWNUM, no, name FROM test ORDER BY no DESC;
- SELECT ROWNUM no, name FROM test WHERE ROWNUM <= 5 ORDER BY no DESC;
- SELECT no, name FROM test WHERE ROWNUM <= 5 ORDER BY no DESC;
- SELECT ROWNUM, no, name FROM test ORDER BY no DESC;
- ROWNUM은 SELECT 이후에 붙여지는 객체이기 때문에 이후에 ORDER BY를 하면 순서가 망가질 수 있다.
- SELECT ROWNUM, no, name FROM test WHERE ROWNUM > 5 ORDER BY no DESC;
- ROWNUM 범위가 1부터 명시되지 않으면 결과가 나오지 않는다.
- SELECT ROWNUM, no, name FROM ROWNUM >= 1 AND ROWNUM < 1 + 5 ORDER BY no DESC;
- SELECT * FROM ( SELECT ROWNUM AS RNUM, T.* FROM (SELECT no, name FROM test ORDER BY no DESC) T) WHERE RNUM >= 6 AND RNUM < 6 + 5;
- ROWNUM의 사본을 만들어 값으로 가져와 1이 명시되지 않아도 결과를 출력시킬 수 있다.
- Oracle에서 붙여주는 행번호 객체
- ROW_NUMBER() OVER (ORDER BY 정렬컬럼1, ...)
- 특정 컬럼의 값을 기준으로 정렬한 뒤 순서를 부여한다.
- ROW_NUMBER() OVER (ORDER BY 정렬컬럼1, ...) SubQuery Column FROM SubQuery;
- 사용법
- SELECT ROW_NUMBER() OVER (ORDER BY no DESC) AS RNUM, T.* FROM (SELECT no, name FROM (SELECT no, name FROM test ORDER BY no DESC) T;
- 특정 컬럼의 값을 기준으로 정렬한 뒤 순서를 부여한다.
- RANK() OVER (ORDER BY 정렬컬럼1, ...)
- 특절 컬럼의 값을 기준으로 정렬한 뒤 순위를 부여한다.
- RANK() OVER (ORDER BY 정렬컬럼1, ...) SubQuery Column FROM SubQuery;
- 사용법
- SELECT RANK() OVER (ORDER BY total DESC) T.* FROM (SELECT no, name, total FROM total) T;
- 특절 컬럼의 값을 기준으로 정렬한 뒤 순위를 부여한다.