음머어's 까망별

블로그 이미지
무지 인간의 첫 걸음..
by 까망별 음머어
  • 283,229Total hit
  • 24Today hit
  • 55Yesterday hit


내가 지식이 얕은 건지, 어떻게든 돌아가게는 만든다는 주먹구구식 마인드 때문인지,
Oracle DB에 입력되어 있는 순차적인 데이터의 선택적 추출은
이 방법밖에 알지 못한다..

자, 이제 그 방법에 대해 알아보자.

먼저 MySQL 에서는
# [MySQL]
SELECT a.love_id
FROM love a
LIMIT 1000, 2000;


하면, 실제 입력된 데이터의 순서에 맞추어 1000번 부터 2000번까지의 데이터가 나온다.

하지만.... 망할 ORACLE 에는 없다는 거....

어떤 분들은 'rownum으로  WHERE rownum BETWEEN 1000 AND 2000 하면 되지 않느냐??'
라고 하는데..... 잘 찾아보면, rownum 은 결과 값에 매겨지는 상대적인 값이므로,
절대적인 신뢰감이 없고, 위의 수식도 먹지 않는다.....
뭐.. 안 믿으시면 한 번 해보시라.. --;;

그럼.. 어떻게 해야할까?
우리의 친구 꼼수를 한 번 발동 시켜볼까?

* 해법 *
************************************************************************************************
# [Oracle]
1. 아래 쿼리는, 데이터가 실제적으로 들어간 순서에 맞게 rownum을 부여 하여,
그 값을 하나의 컬럼으로 출력될 수 있게 해준다.
SELECT a.rownum as rnum, a.love_id
FROM love a;

2. 1에서 만들어진 쿼리를 아래와 같이 서브쿼리화 하여, between 사용이 가능해진다.
SELECT b.love_id
FROM (SELECT a.rownum as rnum, a.love_id FROM love a) as b
WHERE b.rnum BETWEEN 1000 AND 2000;

************************************************************************************************

자, 그럼,, 저 위의 방식을 이용하여 마음껏(???) limit 인 척 해보자.



저작자 표시 비영리
신고
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

모든 이야기 (77)
독백 (22)
MySQL (25)
Oracle (7)
영화 (6)
Linux (3)
DW(Data Warehouse) (0)
(7)
음악 (1)
Python (3)
Postgresql (2)

ARCHIVE