MySQL limit offset
とても基本的なことだが、MySQLのSELECT文にて、OFFSETが該当件数以上の値となっている場合、結果が0行となる。
(想定するレコードを取得できない)
以下のようなテーブルに対して、SQLを発行する。
|id|name| |1|いちろう| |2|じろう| |3|さぶろう| |4|しろう| |5|ごろう|
OFFSET 0=先頭から検索する。
SELECT * FROM USER LIMIT 5 OFFSET 0; |id|name| |1|いちろう| |2|じろう| |3|さぶろう| |4|しろう| |5|ごろう|
OFFSET 5=6行目から検索する。
SELECT * FROM USER LIMIT 5 OFFSET 5; Empty set (0.00 sec)
当然、レコードは5件しかないため、6行目からの検索結果は”0件”となる。
また、offsetは2段階の処理となっており、2つ目の切り捨て負荷が無視できない場合がある。
- 条件に合致する全レコードを取得
- 取得レコードからオフセット文のレコードを捨てる