logo

SQL ORDER BY ランダム

結果のレコードを次のようにしたい場合は、 ランダムに注文 、いくつかのデータベースに従って次のコードを使用する必要があります。

ここで質問があります。データベースからランダムなレコードや行をフェッチする必要は何ですか?

場合によっては、次のようなランダムな情報を表示したい場合があります。 記事、リンク、ページ 、などをユーザーに伝えます。

CSS太字

いずれかのデータベースからランダムな行をフェッチしたい場合は、データベースに応じて変更されたクエリを使用する必要があります。

    MySQL でランダムな行を選択します。

MY SQL でランダムな行を返したい場合は、次の構文を使用します。

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Postgre SQL でランダムな行を選択します。
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    SQL Server でランダムな行を選択します。
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    oracle でランダムな行を選択します。
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    IBM DB2 でランダムな行を選択します。
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

この概念を実際に理解するために、MySQL データベースを使用した例をいくつか見てみましょう。次のデータを含むテーブル項目がデータベースに作成されたとします。

表: 項目

ID 項目名 品目_数量 商品_価格 購入日
1 石鹸 5 200 2021-07-08
2 歯磨き粉 2 80 2021-07-10
3 ペン 10 50 2021-07-12
4 ボトル 1 250 2021-07-13
5 みがきます 3 90 2021-07-15

items テーブルからランダムなレコードを取得するとします。

コンピューターとは何ですか

クエリは次のように書きます。

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

次のような結果が得られる場合があります。

ID 項目名 品目_数量 商品_価格 購入日
3 ペン 10 二十 2021-07-12

ここで、同じクエリをもう一度実行してみましょう。

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

次のような結果が得られる場合があります。

ID 項目名 品目_数量 商品_価格 購入日
5 みがきます 3 90 2021-07-15

上記の結果から、同じクエリを 2 回実行した場合でも、両方の回で異なるレコードが出力されると結論付けることができます。 RAND () 関数は、単一のテーブルから同じクエリに対して 2 回ともランダム レコードを選択しました。したがって、同じクエリを再度実行しても、毎回異なる出力が得られます。 RAND()関数を使用すると、まれに同じレコードが連続して取得される可能性があります。

ここで、テーブルのすべてのレコードをランダムにフェッチしたいとします。

これを行うには、次のクエリを実行する必要があります。

マイフリックス
 mysql> SELECT * FROM items ORDER BY RAND (); 

次のような結果が得られる場合があります。

ID 項目名 品目_数量 商品_価格 購入日
4 ボトル 1 250 2021-07-13
5 みがきます 3 90 2021-07-15
1 石鹸 5 200 2021-07-08
2 歯磨き粉 2 80 2021-07-10
3 ペン 10 50 2021-07-12

また、employee テーブルに対して RAND() 関数を再度実行すると、レコードの配置が異なる可能性があります。