1. ホーム
  2. sql

[解決済み】SQL Server の LIMIT と OFFSET の等価性?

2022-04-14 22:39:22

質問

PostgreSQLでは LimitOffset キーワードを使用すると、結果セットのページ分割を非常に簡単に行うことができます。

SQL Serverで同等の構文とは?

どのように解決するのですか?

に相当します。 LIMITSET ROWCOUNT しかし、もし一般的なページ送りをしたいのであれば、このようなクエリを書くのがよいでしょう。

;WITH Results_CTE AS
(
    SELECT
        Col1, Col2, ...,
        ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum
    FROM Table
    WHERE <whatever>
)
SELECT *
FROM Results_CTE
WHERE RowNum >= @Offset
AND RowNum < @Offset + @Limit

ここでの利点は、ページングオプションを変更する (あるいはユーザーが変更できるようにする) 場合のオフセットと制限をパラメータ化できることです。

注意 その @Offset パラメータは、通常のゼロベースのインデックスではなく、1ベースのインデックスを使用する必要があります。