programing

오라클 11g에서 "선택" 쿼리에서 오프셋을 추가하는 방법은 무엇입니까?

bestprogram 2023. 8. 15. 11:16

오라클 11g에서 "선택" 쿼리에서 오프셋을 추가하는 방법은 무엇입니까?

Oracle 11g에서 "선택" 쿼리에서 오프셋을 추가하는 방법나는 예를 들어 한도를 추가하는 방법만 알고 있습니다.rownum <= 5이 질문은 중복이 아닙니다. 저는 이미 다른 질문들을 확인했고 제 질문과 관련이 없습니다.

그렇다면 Oracle 11g에서 오프셋을 추가하는 방법은 무엇입니까?

위에서 쉽게 할 수 있습니다.12c지정하여OFFSET.

12c,

SELECT val
FROM   table
ORDER BY val
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;

동일한 작업을 수행하는 방법11g그리고 그 전에, 당신은 사용할 필요가 있습니다.ROWNUM두번이라.inner query그리고.outer query각각 다음과 같다.

의 동일한 쿼리11g,

SELECT val
FROM   (SELECT val, rownum AS rnum
        FROM   (SELECT val
                FROM   table
                ORDER BY val)
        WHERE rownum <= 8)
WHERE  rnum > 4;

여기서OFFSET4입니다.

ROW_NUMBER 함수를 사용할 수 있습니다.

이것이 도움이 될 수도 있습니다.

SELECT *
  FROM(SELECT t.*,
              ROW_NUMBER() OVER (ORDER BY ...) rn -- whatever ordering you want
         FROM your_table t
      )
 WHERE rn >= ... -- your offset

도움이 되길 바랍니다.

오라클 11g의 경우 테이블 사용자가 있다고 가정하고, 제한 및 오프셋에 대해 다음을 수행할 수 있습니다.

    SELECT * FROM (
         SELECT USER.*,
                row_number() over (partition by 1 order by 1) as rnum
         from USER
     )
where rnum <= 100 --limit
  and rnum > 0 --offset

그게 당신에게 효과가 있는지 알려주세요.

Oracle에서 LAG 또는 LED 기능 사용

The LAG function is used to access data from a previous row

The LEAD function is used to return data from the next row

용도:-

LAG  (value_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause)
LEAD (value_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause)

예를 들어 이 링크를 찾으십시오.

오라클 11g의 페이지화를 위해, 우리는 사용할 수 있습니다.ROWNUM.

이것이 그 예입니다.

WITH STUDENT_PAGINATION AS (
    SELECT
        STUDENT.*,
        ROWNUM AS RN
    FROM
        STUDENT
    ORDER BY
        ID
)
SELECT
    *
FROM
    STUDENT_PAGINATION
WHERE
    RN >=5
    AND RN <=10;

언급URL : https://stackoverflow.com/questions/27099414/how-to-add-offset-in-a-select-query-in-oracle-11g