MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで2つの値の間のランダムな値を取得する方法

MySQLで2つの値の間のランダムな値を取得する方法

MySQLで指定した2つの値の間からランダムな値(乱数)を取得するには、RAND()関数とFLOOR()関数を組み合わせて使用します。RAND()は0以上1未満の浮動小数点数を返すため、最大値と最小値の差を掛けて最小値を加算することで、任意の範囲内の値に変換できます。最後にFLOOR()で小数点以下を切り捨てることで、整数の乱数を得られます。

基本構文

select FLOOR( RAND() * (maximumValue-minimumValue) + minimumValue) as anyVariableName;

実行例:100〜200の範囲で乱数を生成する

ここでは、最小値を100、最大値を200として、その間(100と200自体を含む)のランダムな整数を取得してみましょう。クエリは以下の通りです。

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;

実行結果は以下のようになります。

+-------------+
| RandomValue |
+-------------+
| 144         |
+-------------+
1 row in set (0.00 sec)

同じクエリでも実行ごとに結果が変わる

同じクエリをもう一度実行すると、今度は異なる値が出力されます。

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;

以下は、先ほどとは違う値が返ってきた例です。これはRAND()が呼び出されるたびに、指定した範囲内の新しいランダムな値を生成するためです。

+-------------+
| RandomValue |
+-------------+
| 184         |
+-------------+
1 row in set (0.00 sec)

このように、FLOOR(RAND() * (最大値 - 最小値) + 最小値)という式を使えば、MySQLで任意の範囲内の整数乱数を簡単に取得できます。テストデータの作成やサンプリング処理など、さまざまな場面で活用できる便利なテクニックです。

  1. MySQLのBETWEEN演算子で異なる値の間にあるレコードを取得する方法

    MySQLのBETWEENで異なる値の間にある値を取得する MySQLではBETWEEN演算子を使用することで、特定の2つの値の間に存在するレコードを簡単に取得できます。ここでは、従業員コード(文字列型)を格納したテーブルを例に、具体的な手順を解説します。 1. サンプルテーブルの作成 まず、以下のCREATE TABLE文でテーブルを作成しましょう。 mysql> create table DemoTable1473 -> ( -> EmployeeCode varchar(20) -> ); Query OK, 0 rows affecte

  2. MySQLで2つの日時(DATETIME)値の差を求める方法

    MySQLで2つの日時値の差を求める方法MySQLで2つのDATETIME型の値の差を求めるには、TIMESTAMPDIFF()関数を使用します。この関数を使うことで、秒・分・時間などの任意の単位で2つの日時の差を簡単に計算できます。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> DueDatetime1 datetime, -> DueDatetime2 datetime -> );Query OK, 0 rows affected (0.86 sec)次に、INSE