sql >> データベース >  >> RDS >> MariaDB

MariaDBのテーブルからランダムな行を返す

    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サイトの「データサンプリング:ランダムな行を効率的に見つけるための手法」を参照してください。


    1. Atand()がPostgreSQLでどのように機能するか

    2. SQLServerにログインできません+SQLServer認証+エラー:18456

    3. OBJECT_NAME()を使用して、SQLServerのobject_idからオブジェクトの名前を取得します

    4. oracletmstmpフィールドからミリ秒を削除する