이전 Microsoft SQL Server 버전의 LIMIT 절에 대한 해결 방법
Microsoft SQL Server 2000에는 ROW_NUMBER()
기능이 없어 MySQL과 같은 데이터베이스에 있는 LIMIT
절의 기능을 복제하기가 어려웠습니다. 여러 가지 방법이 있지만 각각 단점이 있습니다.
TOP
을 사용한 중첩 쿼리는 일반적인 접근 방식입니다. 그러나 원하는 범위가 전체 행 수를 초과하면 이 방법이 실패하고 특히 마지막 "페이지"에서 페이지 매김 오류가 발생합니다.
또 다른 기술은 테이블 내의 고유한 열을 사용합니다. 이는 적합한 고유 식별자의 존재 여부에 따라 달라지므로 본질적으로 제한됩니다.
SQL Server 2005 이상의 경우 EXCEPT
문은 더욱 강력한 솔루션을 제공합니다. 여기에는 중첩된 쿼리를 EXCEPT
연산자와 결합하여 초기 행을 필터링하여 원하는 하위 집합을 효과적으로 달성하는 작업이 포함됩니다.
예시: 50~75행을 검색하려면:
<code class="language-sql">SELECT * FROM ( SELECT TOP 75 COL1, COL2 FROM MYTABLE ORDER BY COL3 ) AS foo EXCEPT SELECT * FROM ( SELECT TOP 50 COL1, COL2 FROM MYTABLE ORDER BY COL3 ) AS bar;</code>
요약하자면, SQL Server 2000에는 LIMIT
을 모방하기 위한 해결 방법이 있지만 타협이나 추가 기능에 의존하지 않고는 그 동작을 완벽하게 복제할 수 없습니다. ROW_NUMBER()
을 지원하는 버전(SQL Server 2005 이상)에서는 해당 기능을 사용하는 것이 가장 효과적이며 권장되는 방법입니다.
위 내용은 ROW_NUMBER() 없이 Microsoft SQL Server 2000에서 LIMIT 절을 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!