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で開始から終了日付内を調べたいとき
等号不等号でもできるけど、BETWEENというのがよさそう。 ■参考サイト ht ...
-
-
WordPressサイトのロードアベレージが高い際の対応方法
あるWordPressサイトのロードアベレージが先月ぐらいまでは通常0.5前後で ...
-
-
MySQLで全角半角を区別せずに検索する方法(collate utf8_unicode_ci)
あるシステムでMySQLの検索時に「WHERE test_column coll ...
-
-
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...
-
-
MySQLでスレッドの実行状況を表示しスレッドの経過時間チェックや特定スレッドを強制終了する方法
データベースサーバが重たく、原因を調査する機会があった。サーバ自体のメモリやCP ...