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をクエリにつけてあげると上手いこといった。
参考サイト
関連記事
-
-
WordPressサイトのロードアベレージが高い際の対応方法
あるWordPressサイトのロードアベレージが先月ぐらいまでは通常0.5前後で ...
-
-
MySQLのバイナリログ(/var/lib/mysql/binlog)を適切に削除する方法
レンタルしているVPS内のファイルを整理していると「/var/lib/mysql ...
-
-
MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表示する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから干支(十二支 ...
-
-
MySQLで「server has gone~」というエラーの対応方法
MySQLで「MySQL server has gone away」というエラー ...
-
-
ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる
MySQLでON DUPLICATE KEY UPDATE句指定し、データの登録 ...