SELECTクエリの先頭から特定の行数、つまり特定の行数を返すにはどうすればよいですか?
つまり、1000行のテーブルがあるとします。最初の50行が必要で、次に2番目の50行が必要で、次に3番目の50行が必要であるとします。TOPまたはLIMITによって返される行数が制限されることは知っていますが、返されるテーブルの特定のポイントから行を取得するようにSQLに指示する方法がわかりません。
SELECTクエリの先頭から特定の行数、つまり特定の行数を返すにはどうすればよいですか?
つまり、1000行のテーブルがあるとします。最初の50行が必要で、次に2番目の50行が必要で、次に3番目の50行が必要であるとします。TOPまたはLIMITによって返される行数が制限されることは知っていますが、返されるテーブルの特定のポイントから行を取得するようにSQLに指示する方法がわかりません。
SQLサーバーでは、ROW_NUMBER()
関数を使用して必要なことを実行できます
SELECT ROW_NUMBER() OVER(ORDER BY col3 DESC) AS Row,
col1, col2, col3
FROM tablename
要するに
WITH ctetable AS
(
SELECT ROW_NUMBER() OVER(ORDER BY col3 DESC) AS RowNumber ,
col1, col2, col3
FROM tablename
)
SELECT *
FROM ctetable
WHERE RowNumber BETWEEN 1 AND 50;
SELECT TOP 50 * FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS [Index], * FROM MyTable
) AS A
WHERE A.[Index] BETWEEN @StartIndex AND @EndIndex
;With CTE as(SELECT ROW_NUMBER() OVER(ORDER BY (select 0)) AS rno, * FROM MyTable)
select * from CTE where rno between start and end;