집 >데이터 베이스 >MySQL 튜토리얼 >Microsoft SQL Server 2000에서 MySQL의 LIMIT 절을 모방하는 방법은 무엇입니까?
Microsoft SQL Server 2000에서 MySQL의 LIMIT 기능 복제
MySQL의 LIMIT
절은 특정 수의 행 검색을 단순화합니다. SQL Server 2000에는 직접적인 대응 기능이 없으므로 해결 방법이 필요합니다. 비슷한 결과를 얻을 수 있는 몇 가지 방법은 다음과 같습니다.
방법 1: 중첩 쿼리(SQL Server 2000)
이 접근 방식은 중첩된 SELECT
문을 사용하여 정의된 범위 내의 행을 필터링합니다.
<code class="language-sql">SELECT TOP 25 * FROM ( SELECT TOP 75 * FROM table ORDER BY field ASC ) a ORDER BY field DESC;</code>
field
에서 주문한 후 26-75행을 검색합니다. 참고: 이 방법은 대규모 데이터 세트의 경우 효율성이 떨어지며 마지막 페이지에 대해 여러 페이지 크기가 아닌 시나리오를 적절하게 처리하지 않습니다.
방법 2: 고유 열 활용(SQL Server 2000)
테이블에 고유 열(예: 기본 키)이 있는 경우 이 기술은 이미 선택된 행을 제외합니다.
<code class="language-sql">SELECT TOP n * FROM tablename WHERE key NOT IN ( SELECT TOP x key FROM tablename ORDER BY key );</code>
이것은 n
열을 기준으로 정렬된 상위 x
행을 제외하고 key
행을 선택합니다. 이는 대형 테이블에도 효율성이 떨어집니다.
방법 3: ROW_NUMBER() 사용(SQL Server 2005 이상)
SQL Server 2005 이상에서는 ROW_NUMBER()
함수가 더욱 우아한 솔루션을 제공합니다.
<code class="language-sql">SELECT z2.* FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS rownum, z1.* FROM ( ...original SQL query... ) z1 ) z2 WHERE z2.rownum BETWEEN @offset + 1 AND @offset + @count;</code>
각 결과에 행 번호를 할당한 다음 지정된 오프셋(@offset
) 및 개수(@count
)를 기준으로 필터링합니다. 이는 일반적으로 최신 SQL Server 버전에 가장 효율적이고 유연한 방법입니다.
방법 4: EXCEPT 문(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>
COL3
에서 주문한 후 51~75행을 선택합니다. ROW_NUMBER()
접근 방식과 유사하게 이는 최신 SQL Server 버전에 대한 보다 효율적인 솔루션입니다. 그러나 복잡한 시나리오의 경우 ROW_NUMBER()
보다 직관적이지 않습니다. SQL Server 버전과 데이터 세트 크기에 가장 적합한 방법을 선택하세요.
위 내용은 Microsoft SQL Server 2000에서 MySQL의 LIMIT 절을 모방하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!