[SQL] LIMIT 대안과 오라클에서 페이징 오프셋 [중복]
SQLLIMIT 대안과 오라클에서 페이징 오프셋 [중복]
나는 페이지 주문 결과에 웹 응용 프로그램과 필요를 개발하고 있어요. 나는 일반적으로이 목적을 위해 오프셋 LIMIT를 / 사용합니다.
오라클 페이지 주문 결과 가장 좋은 방법은 무엇입니까? 나는 ROWNUM과 하위 쿼리를 사용하여 일부 샘플을 본 적이있다. 즉, 방법이 있나요? 당신은 오라클이 SQL을 번역 나에게 샘플을 제공 할 수 :
SELECT fieldA,fieldB
FROM table
ORDER BY fieldA
OFFSET 5 LIMIT 14
(나는 무엇의 가치를 위해, 오라클 10g를 사용하고 있습니다)
감사!
대답: karim79 아래 제공된 링크를 사용하면,이 SQL과 같을 것이다 :
SELECT * FROM (
SELECT rownum rnum, a.*
FROM(
SELECT fieldA,fieldB
FROM table
ORDER BY fieldA
) a
WHERE rownum <=5+14
)
WHERE rnum >=5
해결법
-
==============================
1.당신은 한계 결과에 ROWNUM 의사 열을 사용해야합니다. 여기를 봐:
당신은 한계 결과에 ROWNUM 의사 열을 사용해야합니다. 여기를 봐:
http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html
-
==============================
2.당신이 10g에있어 때문에, 당신은 분석 기능을 사용하여 ROWNUM 접근 방식을 단순화 할 수 있어야한다
당신이 10g에있어 때문에, 당신은 분석 기능을 사용하여 ROWNUM 접근 방식을 단순화 할 수 있어야한다
SELECT fieldA, fieldB FROM (SELECT fieldA, fieldB, row_number() over (order by fieldA) rnk FROM table_name) WHERE rnk BETWEEN 5 AND 14;
-
==============================
3.오라클 (12c)의, 당신은 상단의 N 쿼리를 사용할 수 있습니다.
오라클 (12c)의, 당신은 상단의 N 쿼리를 사용할 수 있습니다.
SELECT fieldA,fieldB FROM table ORDER BY fieldA OFFSET 5 ROWS FETCH NEXT 14 ROWS ONLY;
http://www.oracle-base.com/articles/12c/row-limiting-clause-for-top-n-queries-12cr1.php
-
==============================
4.방법 1 : 데이터베이스 버전 Oracle12c 이상 들어
방법 1 : 데이터베이스 버전 Oracle12c 이상 들어
SELECT fieldA, fieldB FROM table ORDER BY fieldA OFFSET 5 ROWS FETCH NEXT 14 ROWS ONLY
데이터베이스 버전 Oracle11g 필요하거나 분석 기능 ROWNUMBER를 사용하여 낮은 () : 방법 - 2
SELECT fieldA, fieldB FROM ( SELECT fieldA, fieldB, row_number() over (order by fieldA) rowRank FROM table_name ) WHERE rowRank BETWEEN 5 AND 14;
데이터베이스 버전 Oracle11g에 대한 또는 ROWNUM을 사용하여 낮은 : 방법 - 3
SELECT T.* FROM ( SELECT T.*, rowNum as rowIndex FROM ( SELECT fieldA, fieldB, FROM table_name )T)T WHERE rowIndex > 0 AND rowIndex <= 20;
어떤 경우에는, 당신의 데이터베이스 버전은 12C 인 이상 당신이 방법-1에 대한 이동해야하는 경우 방법-3, ORDER BY 절은 그러나 방법 2에 필수이기 때문에 빠른 방법-2보다 발견했다.
from https://stackoverflow.com/questions/2912144/alternatives-to-limit-and-offset-for-paging-in-oracle by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 주 없음을 사용하여 MySQL의에 일주일의 첫날을 얻기 (0) | 2020.05.01 |
---|---|
[SQL] 어떻게 ORA-01775를 디버깅하는 방법 : 동의어의 반복 체인? (0) | 2020.05.01 |
[SQL] SELECT 문에서 부울 유형을 사용하는 방법 (0) | 2020.05.01 |
[SQL] 어떻게 오라클에서 정규 표현식에서 그룹을 추출하는? (0) | 2020.05.01 |
[SQL] 나는 SQL에서 최대 (COUNT (*)를) 할 수 있습니까? (0) | 2020.05.01 |