[SQL] SQL (ORACLE) : ORDER BY와 LIMIT [중복]
SQLSQL (ORACLE) : ORDER BY와 LIMIT [중복]
내 DB에 재산 모든 데이터가 정렬 및 후에 만 사용 LIMIT을 그와 OFFSET 않습니다합니다.
이 같은 쿼리 :
SELECT select_list
FROM table_expression
[ ORDER BY ... ]
[ LIMIT { number | ALL } ] [ OFFSET number ]
이 정렬 된 결과의 첫 번째 ROW_COUNT 행을 발견했다 나는 즉시 정렬 끝을 알고있다. 나는 LIMIT와 OFFSET를 호출하기 전에 모든 데이터를 정렬 할 수 있습니까?
해결법
-
==============================
1.이전 12.1로, 오라클은 LIMIT 또는 OFFSET 키워드를 지원하지 않습니다. 당신이 결과 세트의 M을 통해 행 N을 검색 할 경우, 당신은 뭔가를해야 할 것입니다 :
이전 12.1로, 오라클은 LIMIT 또는 OFFSET 키워드를 지원하지 않습니다. 당신이 결과 세트의 M을 통해 행 N을 검색 할 경우, 당신은 뭔가를해야 할 것입니다 :
SELECT a.* FROM (SELECT b.*, rownum b_rownum FROM (SELECT c.* FROM some_table c ORDER BY some_column) b WHERE rownum <= <<upper limit>>) a WHERE b_rownum >= <<lower limit>>
또는 분석 기능을 사용하여 :
SELECT a.* FROM (SELECT b.*, rank() over (order by some_column) rnk FROM some_table) WHERE rnk BETWEEN <<lower limit>> AND <<upper limit>> ORDER BY some_column
어느 이러한 방법의 종류 당신에게 행 N 정렬 된 결과의 M을 줄 것이다.
12.1 이상에서는 오프셋을 사용할 수 있습니다 및 / 또는 [FIRST를 FETCH | NEXT] 운영자 :
SELECT * FROM some_table ORDER BY some_column OFFSET <<lower limit>> ROWS FETCH NEXT <<page size>> ROWS ONLY
from https://stackoverflow.com/questions/7480243/sql-oracle-order-by-and-limit by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 피벗 테이블과 연결하여 열 (0) | 2020.04.04 |
---|---|
[SQL] 행에 쉼표로 구분 된 열 값을 변환 (0) | 2020.04.04 |
[SQL] SQL 서버 - 선언 된 변수 절에 [중복] (0) | 2020.04.04 |
[SQL] 왜 절 곳에서 함수, 윈도우를하지? (0) | 2020.04.04 |
[SQL] 왜 널은 널 false로 동일하지 않다 (0) | 2020.04.04 |