MySQL 結果セットのランダムな順序付け

MySQL 結果セットをランダムに順序付ける必要がある場合があります。たとえば、懸賞でランダムに当選者を選択する場合などです。 この投稿では、これをどのように行うかについて見ていきます。次回の MySQL の投稿では、複数のページにわたってデータを「ランダムに」並べることについて見ていきます。

懸賞の例を使って、調査を行い、調査に参加した人のうち 10 人に賞品を与えることにしたとします。 これらの人々は無作為に選ばれることになります。

テーブルから無作為の順序で10レコードを選択するには、次のようにします。

SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10

ORDER BY RAND() 行は結果セットをランダムにするもので、 LIMIT 10 行は最初の10結果だけを返します。

この方法で結果セットをランダムに並べることは非効率的であり、大きな結果セットでは遅くなります。なぜなら、並べ替えの前にすべての行に乱数を適用しなければならないからです。

RAND() を使用してデータを「ランダムに」表示する必要がある場合、同じレコードが複数のページに表示され、同じページをページバックおよび転送しても一貫したデータセットを取得できないため、あまり役に立ちません。 この方法については、来週のMySQLの記事で紹介する予定です。 私の RSS フィード(詳細は下記)を購読して、見逃さないようにしてください。

コメントを残す

メールアドレスが公開されることはありません。