MySQLでランダムに結果を取り出す方法をご紹介します。
以下のように「order by rand()」を使用します。
1 |
select * from テーブル order by rand(); |
この場合だと全件表示されるので、10件だけ表示したい場合には「limit」で絞ります。
1 |
select * from テーブル order by rand() limit 10; |
総件数が少ない場合は良いのですが、全件数分でrand()を計算するため、総件数が多いと時間がかかります。
その場合は、whereで対象を絞ります。以下では、1000万件の中から10件を取得する場合の書き方です。「0.000001」は「10/10000000」で算出しています。
1 |
select * from テーブル where rand() <= 0.000001; |
覚えておきましょう!