SQL Server でのリミット句っぽいもの

  • このエントリーをはてなブックマークに追加

僕は、ガチのWeb系じゃなくて、業務アプリをWebで作ってる程度なので、ページャを作る機会はほとんどなく、MySQLなどでよく使われるLimit句っぽいSQLを使うことがめったにない。

すぐに忘れるだろうからメモ。

今日仕事で使う場面に遭遇した SQL Server  で次のようなやり方があった。

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER(ORDER BY CHUMON_NO, TOIAWASE_NO) AS NARABIJUN
    , *
  FROM CHUMON 
) as CHUMON
WHERE NARABIJUN BETWEEN 101 AND 200

SQL Server 2012 以降は次のSQLが使えるらしい。古い古い SQL Server 使ってるから試せてない。

SELECT *
FROM CHUMON
ORDER BY CHUMON_NO, TOIAWASE_NO
OFFSET 101 ROWS FETCH NEXT 100 ROWS ONLY

 

2012より前は、「何番目から何番目まで」、 2012以降は、「何番目から何個」って違い。

どっちが使いやすいのだろうか。

 

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*