勉強したことのメモ.

Webエンジニア / プログラマが勉強したことのメモ。

MySQLでランダムにデータを取得しつつページング機能も実装する方法

   2024/04/18  PHP MySQL

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をクエリにつけてあげると上手いこといった。

 

参考サイト

http://satussy.blogspot.jp/2011/04/mysql.html?m=1

 - PHP MySQL

  関連記事

MySQLでユニークキーをはる
MySQLでユニークキーをはる

MySQLでseqとcodeみたいなものをあわせて ユニークキーをはりたかった。 ...

MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法
MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法

MySQLでオートインクリメントを使用せずにグループ毎で連番を割り振りたかった。 ...

MySQLで直近〇日、〇ヶ月、〇年以内のデータを検索する方法
MySQLで直近〇日、〇ヶ月、〇年以内のデータを検索する方法

他社が作成されたSQL文を見ているとDATE_ADDという使ったことの無い関数が ...

Podmanでデータベース用コンテナを作成しWebサーバ用コンテナと接続する方法
Podmanでデータベース用コンテナを作成しWebサーバ用コンテナと接続する方法

Podmanでデータベース用コンテナを作成し、Webサーバ用コンテナからPHPで ...

MySQLで指定の順にデータをソートする方法(ORDER BY FIELD)
MySQLで指定の順にデータをソートする方法(ORDER BY FIELD)

MySQLで指定した順にソートしてデータを取り出したい。通常だと主キーだったり何 ...