
要約: このチュートリアルでは、実行時に疑似乱数を生成するために SQL RAND 関数を使用する方法を学習します。
SQL RAND 関数の概要
RAND 関数は、0 と 1 (包括的) の間の疑似乱数浮動小数点数を生成します。次に、RAND 関数の構文を示します。
RAND(seed);Code language: SQL (Structured Query Language) (sql)RAND 関数は、整数のデータ型を使用したオプションの seed 引数を受け付けます。RAND 関数を同じセッション内で同じ seed 値でコールした場合、関数は全く同じ値を返します。異なるランダムな数値を得るには、異なる seed 値を指定するか、別のセッションを使用する必要があります。
seed 引数を省略すると、RAND 関数は関数コール間で浮動小数点ランダム数値を返します。
PostgreSQL などのデータベースシステムでは、RAND 関数と同等の RANDOM という名前の関数が提供されていることに注意してください。
SQL RAND 関数の例
次の例は、0 と 1 の間のランダムな数値を生成する方法を示しています。
SELECT RAND();Code language: SQL (Structured Query Language) (sql)ステートメントを複数回実行すると、さまざまなランダムな数値が表示されます。
次のステートメントを複数回実行すると、RAND 関数が同じ seed 値を使用するため、全く同じ値が生成されます。
SELECT RAND(100);Code language: SQL (Structured Query Language) (sql)範囲内のランダムな整数を生成する
範囲 (n,m) で n <= R < m のランダムな整数 R を生成するには、RAND 関数を ROUND 関数と組み合わせて次のように使用します。
ROUND(n + RAND() * (m − n))Code language: SQL (Structured Query Language) (sql)たとえば、1 と 100 の間のランダムな数値を取得するには、次のステートメントを使用します。
SELECT ROUND(1 + (RAND() * 99)) AS RAND_1_100;Code language: SQL (Structured Query Language) (sql)ランダムな順序で行を照会する
RAND 関数を ORDER BY 句で使用して、次のようにランダムな順序で行を取得できます。
SELECT * FROM table_name
ORDER BY RAND();Code language: SQL (Structured Query Language) (sql)行のセットからランダムなサンプルを選択するには、上記のステートメントに LIMIT 句を追加します。次のステートメントは、テーブル内の N 個のランダムな行を取得します。
SELECT * FROM table_name
ORDER BY RAND()
LIMIT N;Code language: SQL (Structured Query Language) (sql)サンプルデータベースの employees テーブルを見てみましょう。サンプルデータベース

次のステートメントは、5 人のランダムな従業員を取得します。
SELECT employee_id, first_name, last_name
FROM employees
ORDER BY RAND()
LIMIT 5;Code language: SQL (Structured Query Language) (sql) employee_id | first_name | last_name
-------------+------------+-----------
113 | Luis | Popp
204 | Hermann | Baer
179 | Charles | Johnson
110 | John | Chen
111 | Ismael | Sciarra
(5 rows)Code language: SQL (Structured Query Language) (sql)データセットが小さいテーブルからランダムな行を取得するには、この方法を使用する必要があることに注意してください。大きなテーブルの場合は、遅くなります。
このチュートリアルでは、SQL RAND 関数を使用して、実行時にクエリで疑似乱数を生成する方法について学習しました。