MySQLでランダムにデータを取得しつつページング機能も実装する方法
2024/04/18
MySQLからデータを持ってくる際にランダムな表示を行ってほしいと言われた。ただ、1ページあたり20件表示で、検索結果件数がそれ以上ならページをつけてほしいとのこと。調べたところMySQLのRAND()関数で解決した。以下に対応方法をメモ。
ソースコード
<?php
$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で特定カラムの
タグを改行コードに一括置換させる方法MySQLで特定カラムの<br>タグを改行コードに一括置換したかった ...
-
-
MySQLでカラム内容によって条件分岐させたい場合の対応方法
MySQLでカラムの内容によって条件を分岐させたかった。またPHPで処理するので ...
-
-
MySQLのTEMPORARY TABLE(テンポラリテーブル)で高速化を図る方法
MySQLで5000万件ぐらいデータが入っているテーブルから日本語検索しないとい ...
-
-
MySQLでINSERT時にオートインクリメントではないカラムに連番を登録する方法
MySQLでINSERT時にオートインクリメントではないカラムに連番を登録したい ...
-
-
MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法
先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...