【SQL Server】大量データから範囲指定してデータ取得する
ぐぐればわかるけどまとめます。
以下すべて、大量データから101~200件目を取得するSQLです。
2005以前でもなんでも動くのはこちら。
でもこれだけコピぺで確認してないんだ、すまないが使う時は自分で調整してほしい。
SELECT top(100) ID, Title FROM Contents
WHERE ID NOT IN
(SELECT TOP 101 ID FROM Contents ORDER BY RegisterDate DESC)
ORDER BY RegisterDate DESC
----------------------------------------------------------------------------------------------------------
2005以降ならこれで。
今更20005以前のSQL Server使わないだろうからこれが一番いいのではないか。
SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY RegisterDate DESC) AS rownum, * FROM Contents)
WHERE rownum BETWEEN 101 AND 200
----------------------------------------------------------------------------------------------------------
2012からは以下の構文が一番楽。
2012以前の環境使わない事が確定ならこれでもいい。
SELECT * FROM Contents ORDER BY RegisterDate DESC
OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY