>데이터 베이스 >MySQL 튜토리얼 >Oracle SQL 쿼리에서 MySQL의 LIMIT 절을 효과적으로 에뮬레이션하는 방법은 무엇입니까?

Oracle SQL 쿼리에서 MySQL의 LIMIT 절을 효과적으로 에뮬레이션하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-25 08:47:091005검색

How to Effectively Emulate MySQL's LIMIT Clause in Oracle SQL Queries?

Oracle SQL에서 MySQL의 LIMIT 복제

MySQL의 LIMIT 절은 데이터 페이지 매기기에 중요한 순서 지정 후 지정된 수의 행 검색을 단순화합니다. 그러나 Oracle에는 다른 접근 방식이 필요합니다.

ROWNUM만으로는 충분하지 않은 이유

Oracle의 ROWNUM 의사 열은 해결책처럼 보일 수 있지만 이는 앞에ORDER BY 적용됩니다. 즉, 정렬된 행 범위에 ROWNUM을 사용하면 예측할 수 없는 결과가 발생합니다.

효과적인 하위 쿼리 접근 방식

신뢰할 수 있는 방법은 먼저 데이터를 정렬한 다음 ROWNUM 제한을 적용하는 하위 쿼리를 포함합니다.

<code class="language-sql">SELECT *
FROM (
    SELECT *
    FROM emp
    ORDER BY sal DESC
)
WHERE ROWNUM <= 5;</code>

상한 및 하한 정의

보다 정확한 제어를 위해 최소 및 최대 행 수를 모두 지정하면 더 복잡한 쿼리가 필요합니다.

<code class="language-sql">SELECT *
FROM (
    SELECT a.*, ROWNUM rnum
    FROM (
        SELECT * FROM <your_table> ORDER BY <your_column>
    ) a
    WHERE ROWNUM <= :MAX_ROW_TO_FETCH
)
WHERE rnum >= :MIN_ROW_TO_FETCH;</code>

Oracle 12c 이상의 향상된 기능

Oracle 12c 이상 버전은 FETCH FIRSTOFFSET을 사용하여 더욱 깔끔한 솔루션을 제공합니다.

<code class="language-sql">-- Retrieve the first 10 rows
SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;

-- Retrieve rows 20-30
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;</code>

이 간소화된 구문은 Oracle에서 행 제한 및 오프셋을 관리하는 보다 직관적인 방법을 제공합니다.

위 내용은 Oracle SQL 쿼리에서 MySQL의 LIMIT 절을 효과적으로 에뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.