select * from TEST_TABLE OFFSET 1 ROWS FETCH NEXT 20 ROWS ONLY;
위의 쿼리의경우 첫번째 데이터 부터 20개를 가져오라는 쿼리입니다.
가장 최근에 입력 된 20개를 가져오고 싶은데 어떻게 해야할까요?
오라클 12를 사용중입니다.
http://dataforum.kr/pages/viewpage.action?pageId=15335707 요즘에는 참고할 때가 많아서 정말 좋습니다. ㅎㅎㅎ ====================================== 모든 테이블을 만드실 때 create date, update date 는 필수로 들어가는게 좋습니다.
보통 여기에 create id, update id 가 들어가도 좋죠.
이런건 어차피 DA 지침이 있을 것이라 생각하고, 12c 에서는 이렇게 쓸 수 있지 않을까 합니다. select * from test order by 생성일 desc fetch first 20 rows only ; 11g 까지는 아래처럼 하죠(페이징, Top-N 쿼리)
select * from ( select * from TEST_TABLE where 조건 --> 인덱스 생성되어 있어야 함. order by 생성일 desc --> 결합 인덱스로 들어갈 경우 성능 향상이 되는 경우가 많음. ) where rownum <= 20 row_number over 관련되서는 페이징 쿼리를 알아보시면 됩니다. "생성일" 컬럼이 없을 경우, rowid 을 order by 하여 가져오기도 합니다만, rowid 가 바뀔 경우도 있기 때문에 정확하지는 않습니다.