>데이터 베이스 >MySQL 튜토리얼 >커서, T-SQL 또는 저장 프로시저 없이 SQL Server 2000에서 MySQL의 LIMIT 절을 어떻게 에뮬레이트할 수 있습니까?

커서, T-SQL 또는 저장 프로시저 없이 SQL Server 2000에서 MySQL의 LIMIT 절을 어떻게 에뮬레이트할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-08 07:25:40944검색

How Can I Emulate MySQL's LIMIT Clause in SQL Server 2000 Without Cursors, T-SQL, or Stored Procedures?

이전 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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