[Oracle] ROWNUM 주의 사항(페이징 or 정리시)
2017. 8. 22. 13:15
반응형
[Oracle] ROWNUM 주의 사항(페이징 or 정리시)
▼ WHERE or ORDER BY 절 이없을때
1. 주로 착각 하고 잘못 사용 경우
1 2 3 | SELECT ROWNUM, COL1, COL2 FROM TABLE_NAME ORDER BY COL1 ASC; | cs |
-> RUM과 COL1 이 동일 하게 나옴. 문단의 정리 가 필요하다.
2. 잘 사용했을 경우
1 | SELECT ROWNUM RNUM, COL1, COL2 FROM (SELECT ROWNUM, COL1, COL2 FROM TABLE_NAME ORDER BY COL1 ASC) TABLE_1; | cs |
-> RNUM과 NUM의 값이 다르게 나오며 다른방식으로 사용 할수있다.
▼ WHERE or ORDER BY 절이 있을때
1. 주로 착각 하고 잘못 사용 경우
1 2 | SELECT ROWNUM, TABLE_1.* FROM (SELECT * FROM TALBE_NAME ORDER BY COL1 ASC) TABLE_1 WHERE ROWNUM >= 0 AND ROWNUM <= 10; |
-> 쿼리는 틀리지 않은것 처럼 보이며 오류 또한 나오지 않지만 아무런 결과가 나오지 않는 경우를 볼수있다.
주로 이경우는 오류가아닌 쿼리가 잘못 된 경우 이므로 쿼리를 다시짜보도록하자.
2. 잘 사용했을 경우
1 2 3 | SELECT * FROM (SELECT ROWNUM RNUM, TABLE_1.* FROM (SELECT * FROM TABLE_NAME ORDER BY COL1 DESC) TABLE_1) WHERE RNUM >= 0 AND RNUM <=10; | cs |
사용하는 경우를 자주 실수하는 편이다. 그래서 필자와 같은 분들을 위해 이글을 작성하였다.
** 보너스
1 2 3 | SELECT * FROM (SELECT ROWNUM RNUM, TABLE_1.* FROM (SELECT * FROM TABLE_NAME ORDER BY COL1 DESC) TABLE_1) WHERE RNUM BETWEEN 0 AND 10; | cs |
--> 2번의 경우처럼 사용해도 이상은없으나 필자의 경우 BETWEEN 을 주로 사용하는편이다.
BETWEEN 사용시 좀더 빠르고 가볍게 검색이된다는 장점이 있다는데..
솔직히 아직 까지 몸에 다가온적은 없지만 습관처럼 쓰고있다.
P.S ** ROWNUM을 사용 하는 절에는 WHERE절과 ORDER BY절을 넣지 않도록하자!
반응형
'Program > DataBase' 카테고리의 다른 글
[Oracle] SUBSTR 문자열 자르기 함수 (0) | 2018.01.17 |
---|---|
[Oracle] INSTR 특정 문자 확인 함수 (0) | 2018.01.17 |
DDL, DML, DCL + TCL 이란? (0) | 2017.08.21 |
[MYSQL] 한글깨짐 (0) | 2017.07.20 |
[Oracle] CMD/ SQL PULS/ Oracle 접속 (0) | 2017.07.19 |