100日でSQLの達人になる@LeetCode! Day59 <ORDER BY句で使えるOFFSET-FETCH句>
ORDER BY句で使えるOFFSET-FETCH句について理解する
前回に引き続きLeetCodeの問題はお休み。
しばらくLeetCodeの方はお休みしましたが、そろそろ問題の方に戻ろうと思います。
今回のテーマは前回よりは簡単です。
ただコマンドにFETCH
と出てくるので前回のCURSOR
の話と混同しやすいため要注意。
構文
SQL
GROUB BY句の中で
OFFSET 0以上の整数(式も可) ROWS
FETCH NEXT 1以上の整数(式も可、FETCHは省略可) ROWS ONLY
これで、先頭からOFFSET
で指定した行分スキップし、FETCH
で指定した行分取得します。
指定する場合はROWS
やONLY
も忘れずに記載が必要。
前回同様にdb<>fiddleを使います。
実行例
下記が実行例です。
CREATE TABLE tbl (id INT) DECLARE @num INT =1 WHILE @num <= 50 BEGIN INSERT INTO tbl (id) VALUES(@num) SET @num=@num+1 END -- ここまでで合計50行の行番号のみ入ったテーブルが出来ています。 --使用例1 SELECT id FROM tbl ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY --使用例2 SELECT id FROM tbl ORDER BY id OFFSET 45 ROWS; --使用例3 SELECT id FROM tbl ORDER BY id OFFSET 45 ROWS FETCH NEXT 20 ROWS ONLY
| id | | -: | | 21 | | 22 | | 23 | | 24 | | 25 | | 26 | | 27 | | 28 | | 29 | | 30 | | id | | -: | | 46 | | 47 | | 48 | | 49 | | 50 | | id | | -: | | 46 | | 47 | | 48 | | 49 | | 50 |
db<>fiddle here
使用例2ではFETCH句
を省略していますが、後ろ全部を表示しています。
使用例3ではFETCH句
で20行指定していますが5行しか無いため5行分のみ表示しています。
今日のポイントはORDER BY句でOFFSET, FETCHを使って表示する行数をコントロールする
とした。
Author And Source
この問題について(100日でSQLの達人になる@LeetCode! Day59 <ORDER BY句で使えるOFFSET-FETCH句>), 我々は、より多くの情報をここで見つけました https://qiita.com/Nono3/items/f6493a817f5c19a609bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .