配置されている場所に応じて、クエリから特定の SQL 結果を取得しようとしています。たとえば、このコードを検討してください。
SELECT * FROM Product ORDER BY id asc
少なくとも 100 件程度の結果が返される可能性があります。
問題は、その最初の 1 から 10 の結果を取得するにはどうすればよいか、そして別の別の別のクエリで、11 から 20 の結果を取得する方法、または 51 から 60 の位置にある結果を取得する方法です。そのクエリ?
配置されている場所に応じて、クエリから特定の SQL 結果を取得しようとしています。たとえば、このコードを検討してください。
SELECT * FROM Product ORDER BY id asc
少なくとも 100 件程度の結果が返される可能性があります。
問題は、その最初の 1 から 10 の結果を取得するにはどうすればよいか、そして別の別の別のクエリで、11 から 20 の結果を取得する方法、または 51 から 60 の位置にある結果を取得する方法です。そのクエリ?
CTE を使用して行番号を取得し、行の列でクエリを実行します
with your_query as(
SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) AS Row, *
FROM Product
)
select * from your_query
where Row >=5 and Row<=10
いくつかの方法があります。ROW_NUMBERを使用した1つのアプローチを次に示します。
DECLARE @StartRow INTEGER = 11
DECLARE @EndRow INTEGER = 20
;WITH Data AS
(
SELECT TOP(@EndRow) ROW_NUMBER() OVER (ORDER BY id) AS RowNo, *
FROM Product
)
SELECT *
FROM Data
WHERE RowNo BETWEEN @StartRow AND @EndRow
ORDER BY Id