繰り返し可能な(再現性のある)ランダム値を使ったページング

データ取得するときはランダムにとりたいけど、ランダムにとったデータでページング処理やりたい場合。
今まで

  1. ランダムにデータ取得
  2. webアプリケーションの場合、sessionにデータ保持。
  3. ページングのたびにsessionに保持しているデータを1〜10、11〜20…みたいな感じでデータを切り出す。

今日知った事

  1. 以下のsqlを使って毎回sqlでページング(offsetを変える)
SELECT * FROM table ORDER BY RAND(n) LIMIT 10 OFFSET 1;

※nは任意の定数

上記のようなsqlだとRAND関数が繰り返し可能な乱数を生成する。

[参考リンク]
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.6.2 数学関数