MariaDBのテーブルからランダムな行を返す簡単な方法は次のとおりです。
Pets
というテーブルがあるとします。 次のデータを使用:
SELECT
PetId,
PetName
FROM Pets;
結果:
+-------+---------+ | PetId | PetName | +-------+---------+ | 1 | Fluffy | | 2 | Fetch | | 3 | Scratch | | 4 | Wag | | 5 | Tweet | | 6 | Fluffy | | 7 | Bark | | 8 | Meow | +-------+---------+
RAND()
を使用できます ORDER BY
と組み合わせて機能する 句とLIMIT
そのテーブルからランダムな行を返すキーワード。
例:
SELECT
PetId,
PetName
FROM Pets
ORDER BY RAND()
LIMIT 5;
結果の例:
+-------+---------+ | PetId | PetName | +-------+---------+ | 5 | Tweet | | 7 | Bark | | 1 | Fluffy | | 8 | Meow | | 3 | Scratch | +-------+---------+
そして、もう一度実行すると、次のようになります:
+-------+---------+ | PetId | PetName | +-------+---------+ | 3 | Scratch | | 8 | Meow | | 4 | Wag | | 7 | Bark | | 6 | Fluffy | +-------+---------+
など…
これは非常に集中的であり、大きなテーブルでは使用しないでください。
この手法を使用する場合、MariaDBはテーブル内のすべての行を読み取り、各行にランダムな値を生成して順序付け、最後にLIMIT
を適用します。 句。これにより、大きなテーブルでのクエリが非常に遅くなります。
より大きなテーブルにより適した手法については、MariaDB Webサイトの「データサンプリング:ランダムな行を効率的に見つけるための手法」を参照してください。