
要約: このチュートリアルでは、実行時に疑似乱数を生成するために 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
関数を使用して、実行時にクエリで疑似乱数を生成する方法について学習しました。