집 >데이터 베이스 >MySQL 튜토리얼 >Oracle SQL 쿼리에서 MySQL의 LIMIT 절을 효과적으로 에뮬레이션하는 방법은 무엇입니까?
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 FIRST
및 OFFSET
을 사용하여 더욱 깔끔한 솔루션을 제공합니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!