제가 사용하는 환경은 오라클입니다.
특정테이블이 있는데, 여기엔 프라이머키로 잡은 것이 없는 보통 테이블이 있습니다.
레코드가 엄청나게 많은데, 이를 10개씩 혹은 20개씩 select 해서 보여주고 싶습니다.
여기 한델게시판처럼 페이지단위로 나뉘는 것 처럼 말입니다.
MS-SQL에서는 TOP라는 것과 keynum(이것이 내장함수(?)인지 아니면 프라이머키로 잡은 필드인지 구분이 안가지만)으로 10개 단위로 자르는 방법은 보았습니다. 그렇지만, 필요한 것은 오라클에서 입니다. -_-;;
뉴스그룹에서 오라클로 자르는 방식을 기술해 놓았던데, rownum을 이용한 방법이더군요.
select * from
(select * from 테이블
where rownum < 21 )
where prikey > 10 ; 여기서 prikey는 프라이머키로, 실제 필드키
위의 SQL문에서 예상되는 결과는 11 - 20 번째 레코드를 불러오는 것입니다만,
만약 11-20번째에서 prikey중에 15,16번이 없다고 하면 8개의 레코드가 나타날 것입니다.
이렇게 하는 것이 아니라, 그냥 레코드 10개씩 불러오는 방법은 없는지요?
오라클에서 rownum을 사용할때, 등호를 > 쪽으로 하면 안된다고 하더군요.
언제나 fail될것이라고 하더군요.
예로
select * from 테이블
where rownum > 10 or where rownum >= 10
이렇게 하면 언제나 리턴되는것은 '레코드가 없습니다' 라고 나오더군요.
고로 select * from 테이블
where rownum between 10 and 20
위의 SQL문도 안되더군요. ㅠ.ㅠ
도움을 부탁드립니다.
> 제가 사용하는 환경은 오라클입니다.
> 특정테이블이 있는데, 여기엔 프라이머키로 잡은 것이 없는 보통 테이블이 있습니다.
> 레코드가 엄청나게 많은데, 이를 10개씩 혹은 20개씩 select 해서 보여주고 싶습니다.
> 여기 한델게시판처럼 페이지단위로 나뉘는 것 처럼 말입니다.
>
> MS-SQL에서는 TOP라는 것과 keynum(이것이 내장함수(?)인지 아니면 프라이머키로 잡은 필드인지 구분이 안가지만)으로 10개 단위로 자르는 방법은 보았습니다. 그렇지만, 필요한 것은 오라클에서 입니다. -_-;;
>
> 뉴스그룹에서 오라클로 자르는 방식을 기술해 놓았던데, rownum을 이용한 방법이더군요.
> select * from
> (select * from 테이블
> where rownum < 21 )
> where prikey > 10 ; 여기서 prikey는 프라이머키로, 실제 필드키
>
> 위의 SQL문에서 예상되는 결과는 11 - 20 번째 레코드를 불러오는 것입니다만,
> 만약 11-20번째에서 prikey중에 15,16번이 없다고 하면 8개의 레코드가 나타날 것입니다.
> 이렇게 하는 것이 아니라, 그냥 레코드 10개씩 불러오는 방법은 없는지요?
>
> 오라클에서 rownum을 사용할때, 등호를 > 쪽으로 하면 안된다고 하더군요.
> 언제나 fail될것이라고 하더군요.
> 예로
> select * from 테이블
> where rownum > 10 or where rownum >= 10
> 이렇게 하면 언제나 리턴되는것은 '레코드가 없습니다' 라고 나오더군요.
> 고로 select * from 테이블
> where rownum between 10 and 20
> 위의 SQL문도 안되더군요. ㅠ.ㅠ
>
> 도움을 부탁드립니다.
이런식으로 select를 한번 더하면 되요...
select *
from (select rownum cnt, no, no2 from copy_t)
where cnt > 2
and cnt < 5