僕は、ガチの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以降は、「何番目から何個」って違い。
どっちが使いやすいのだろうか。