ランダム表示のページング
2014/05/16
MySQLからデータを持ってくる際に、
ランダムな表示を行ってほしいと言われた。
ただ、1ページあたり20件表示で、検索結果件数が
それ以上ならページをつけてほしいとのこと。
色々悩んだけどMySQLのRAND()関数で解決した。
RAND()でランダムに出力されるのは知っていたけど、
引数を入れることで、ページングに使えるってのはしらなんだ。
■サンプル
$rand = ( isset($_GET['rand']) && is_numeric($_GET['rand']) ) ? $_GET['rand'] : rand(1,100); //クエリが設定されればそれを引き回す。無ければ1-100の間でランダムな数値を設定する
$sql = '
SELECT SQL_CALC_FOUND_ROWS *
FROM testtable AS
ORDER BY RAND(' . $rand . ')
LIMIT ' . $offset . ',' . $limit
;
↑みたいな感じにしておいて、ページングの際に
$randをクエリにつけてあげると上手いこといった。
関連記事
MySQLでデータベース単位とテーブル単位のデータサイズ(容量)の調べ方
VPSの各種ファイルを整理している際に「MySQLも不要なデータを削除すればいい ...
MySQLで構文エラーが出た際は予約語も疑う
MySQLで構文エラーが発生しており、チェックしたところ、どう見ても構文的には間 ...
MySQLで歯抜けになっているint型の数値を取得する
MySQLで歯抜けになっているシーケンス番号を 取得したいケースがあった。 ■ソ ...
MySQLでLIKE検索時に大文字・小文字・半角・全角全て区別したい
以前にMySQLであいまい検索時に大文字小文字は区別しないが、それ以外は全て区別 ...
MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法
MySQLでオートインクリメントを使用せずにグループ毎で連番を割り振りたかった。 ...