検索したデータをランダムに取り出す方法

いつも同じ順番で表示されるとつまらなかったり、必要上順番がランダムであってほしいことがある。そんな時に使うのが、ORDER BY RAND()です。

SELECT *
FROM テーブル名
ORDER BY RAND()

これであるテーブルのレコードが全部ランダムで表示される。でも、普通はランダムで1件だけとか3件まで表示などがしたいと思うので、そういうときはLIMIT句を追加。

SELECT *
FROM テーブル名
ORDER BY RAND()
LIMIT 1

これで、最初の1件だけ取得ということになります。


ORDER BY RAND()は全部ソートして並べ替えるので、レコードが多いと時間がかかるようになります。だから、大きいテーブルなどに使うと大変なことになります。プライマリキーやインデックスを貼ってあるカラムを使っても全件操作なので厳しいです。だから、場合によってプログラムに前件のデータを送ってランダムにしてもらった方がいいことがあります。