SQL ServerはLIMITの代わりにOFFSET FETCHを使う
LIMITではなくOFFSET FETCHが使える!
SQL Serverでデータ抽出する際、「最初の〇行を取得する」には「OFFSET FETCH」を使います。
Mysqlでは「LIMIT」が使えますが、SQL Serverでは「LIMIT」の代わりに「OFFSET・FETCH」を使います。
OFFSET {スキップ行数} ROWS
スキップする行数を指定します。スキップする必要ががない場合は0にします。
FETCH NEXT {取得する行数} ROWS ONLY
OFFSET句の処理後に取得する行数を指定します。
<参考データ>
--empテーブルを取得する SELECT empno,empname FROM emp ORDER BY empno;
empno | empname |
A001 | 佐藤花子 |
A002 | 田中太郎 |
A003 | 加藤一 |
A004 | 青木花 |
A005 | 藤田学 |
例1. OFFSET・FETCHで開始3行を取得する
--empテーブルの開始3行を取得する SELECT empno,empname FROM emp ORDER BY empno OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY;
empno | empname |
A001 | 佐藤花子 |
A002 | 田中太郎 |
A003 | 加藤一 |
「OFFSET」はスキップする行を指定します。「OFFSET 0 ROWS」として1行もスキップしないようにしました。
「FETCH」は「OFFSET」から取得する行です。ここでは「FETCH NEXT 3 ROWS ONLY」なので3行取得しました。
よって簡単にいうと、ここでは「1行目~3行目」を取得しました。
例2. OFFSET・FETCHで3行目~5行目を取得する
--empテーブルの3行目~5行目を取得する SELECT empno,empname FROM emp ORDER BY empno OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY;
empno | empname |
A004 | 青木花 |
A005 | 藤田学 |
「OFFSET」で2行スキップし3行目から開始します。OFFSETで2行取得するので、3行目~5行目を取得しました。
これでMysqlのLIMITと同じことができました。
以上、SQL ServerのOFFSET FETCHで行数を指定して取得しました。
コメント