집 >데이터 베이스 >MySQL 튜토리얼 >커서, T-SQL 또는 저장 프로시저 없이 SQL Server 2000에서 MySQL의 LIMIT 절을 어떻게 에뮬레이트할 수 있습니까?
이전 SQL Server 버전에서 MySQL의 LIMIT 복제
문제: SQL Server 2000에는 MySQL, PostgreSQL, SQLite와 같은 데이터베이스에서 특정 행 범위를 검색하는 데 사용되는 직접 LIMIT
절이 없습니다. 이 문서에서는 커서, T-SQL 또는 저장 프로시저를 사용하지 않는 해결 방법을 살펴봅니다.
솔루션(제한 있음):
추가 구성 없이 SQL Server 2000에서는 LIMIT
을 직접 에뮬레이션하는 것이 불가능합니다. 그러나 이러한 방법은 특정 상황에서 작동합니다.
방법 1: 고유 키 활용
이 접근 방식은 결과 집합에 고유한 열(예: 기본 키)이 포함된 경우에만 작동합니다.
<code class="language-sql">SELECT TOP n * FROM tablename WHERE key NOT IN ( SELECT TOP x key FROM tablename ORDER BY key );</code>
여기서 x
은 오프셋과 n
검색할 행 수를 나타냅니다. 내부 쿼리는 첫 번째 x
행을 제외하고 외부 쿼리는 후속 n
행
방법 2: 시뮬레이션된 행 번호 매기기
행 번호를 생성할 수 있는 경우(일부 조작이 필요하지만) 하위 쿼리를 사용할 수 있으며 BETWEEN
:
<code class="language-sql">SELECT z2.* FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) as rn, * FROM mytable ) z2 WHERE z2.rn BETWEEN x + 1 AND x + n;</code>
(참고: ROW_NUMBER()
은 SQL Server 2000에서 사용할 수 없습니다. 이 예에서는 개념을 보여줍니다. SQL Server 2000에서는 적절한 행 번호 매기기 대안을 구현해야 합니다.) x
는 오프셋이고 n
는 행 개수입니다.
방법 3(SQL Server 2005 이상 - 비교용):
최신 SQL Server 버전(2005 이상)의 경우 EXCEPT
문이 더 깔끔한 솔루션을 제공합니다.
<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>
51-75행을 검색합니다. 이 방법은 SQL Server 2000에는 적용되지 않습니다.
결론:
SQL Server 2000에서 MySQL LIMIT
의 정확한 기능을 구현하는 것은 어렵습니다. 제공된 솔루션은 해결 방법을 제공하지만 특정 테이블 구조에 의존하거나 행 번호 매기기에 대한 해결 방법이 필요합니다. 최적의 성능과 기능을 위해서는 최신 SQL Server 버전으로 업그레이드하는 것이 좋습니다.
위 내용은 커서, T-SQL 또는 저장 프로시저 없이 SQL Server 2000에서 MySQL의 LIMIT 절을 어떻게 에뮬레이트할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!