晴れときどき雑記

日々の中で残したいこと、まとめておきたいことを書き記すブログ

【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