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で経度緯度から半径○Kmのデータを抽出する方法
経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度 ...
-
-
SSH接続でMySQLにダンプファイルをインポートする方法
phpMyAdminやAdminerが入っていなかったり、ダンプファイルのサイズ ...
-
-
MySQLにてORDER BYで並べ替える際に空のカラムは後ろに持ってくる方法
MySQLにてORDER BYで並べ替える際に空のカラムの場合は後ろに持っていき ...
-
-
MySQLでスレッドの実行状況を表示しスレッドの経過時間チェックや特定スレッドを強制終了する方法
データベースサーバが重たく、原因を調査する機会があった。サーバ自体のメモリやCP ...
-
-
MySQLでユニークキーをはる
MySQLでseqとcodeみたいなものをあわせて ユニークキーをはりたかった。 ...