복붙노트

[SQL] 어떻게 오라클 11g에서 "선택"쿼리에서 오프셋 추가하려면?

SQL

어떻게 오라클 11g에서 "선택"쿼리에서 오프셋 추가하려면?

오라클 11g에서 "선택"쿼리에서 오프셋을 추가하는 방법. 나는 단지 예 : ROWNUM <= 5에 의해 제한을 추가하는 방법을 알고 이 질문은 이미 다른 질문을 확인하고 광산 관련이없는, 중복되지 않습니다.

그럼, 어떻게 오라클 11g에서 오프셋 추가?

해결법

  1. ==============================

    1.당신은 OFFSET 지정하여 12C에 쉽게 할 수 있습니다.

    당신은 OFFSET 지정하여 12C에 쉽게 할 수 있습니다.

    12C에서,

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

    11g 이전에 동일한 작업을 수행하려면, 두 번 사용 ROWNUM 각각 내부 쿼리와 외부 쿼리가 필요합니다.

    11g의 같은 쿼리

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

    여기 OFFSET 4입니다.

  2. ==============================

    2.당신은 그것을 위해 ROW_NUMBER 기능을 사용할 수 있습니다.

    당신은 그것을 위해 ROW_NUMBER 기능을 사용할 수 있습니다.

    어쩌면이 도움이 :

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

    희망이 도움이

  3. ==============================

    3.오라클의 함수 LAG 또는 LEAD를 사용하여

    오라클의 함수 LAG 또는 LEAD를 사용하여

    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)
    

    예는이 링크를 찾아주세요

  4. from https://stackoverflow.com/questions/27099414/how-to-add-offset-in-a-select-query-in-oracle-11g by cc-by-sa and MIT license