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

MySQLで既存のフィールドに30〜300の乱数を加算する方法を解説

MySQLでは、FLOOR()関数とRAND()関数を組み合わせることで、既存のカラムの値に指定した範囲内の乱数を簡単に加算できます。この記事では、実際のサンプルを使って手順を詳しく解説します。

1. デモ用テーブルを作成する

まず、動作確認のためのデモテーブルを作成します。ここでは整数型のカラム「MyNumber」を持つシンプルなテーブルを用意します。

mysql> create table RandomNumberDemo
    -> (
    -> MyNumber int
    -> );
Query OK, 0 rows affected (0.54 sec)

2. テストデータを挿入する

INSERTコマンドを使って、いくつかのレコードをテーブルに登録します。

mysql> insert into RandomNumberDemo values(17);
Query OK, 1 row affected (0.20 sec)
mysql> insert into RandomNumberDemo values(18);
Query OK, 1 row affected (0.12 sec)
mysql> insert into RandomNumberDemo values(29);
Query OK, 1 row affected (0.49 sec)

3. 現在のレコードを確認する

SELECT文でテーブル内の全レコードを表示し、更新前の状態を確認しておきましょう。

mysql> select *from RandomNumberDemo;

実行結果は以下の通りです。

+----------+
| MyNumber |
+----------+
|       17 |
|       18 |
|       29 |
+----------+
3 rows in set (0.00 sec)

4. 既存の値に30〜300の乱数を加算するUPDATE文

いよいよ本題です。既存のフィールドの値に対して、30〜300の範囲の乱数を加算するには、次のようなクエリを実行します。

mysql> update RandomNumberDemo set MyNumber=MyNumber+ FLOOR(RAND() * (270 + 1)) + 30 where MyNumber=18;
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0

クエリの仕組みを解説

このUPDATE文のポイントは以下の式の部分です。

  • RAND():0以上1未満のランダムな小数を返します。
  • RAND() * (270 + 1):0〜270(270を含む)の範囲の乱数を生成します。「最大値 − 最小値 + 1」が270に相当します。
  • FLOOR(...):小数点以下を切り捨てて整数にします。
  • + 30:最小値の30を加算することで、最終的に30〜300の範囲の整数になります。

つまり、汎用的には FLOOR(RAND() * (最大値 - 最小値 + 1)) + 最小値 という形式で、任意の範囲の乱数を生成できます。

5. 更新結果を確認する

再度SELECT文を実行して、テーブルの内容を確認してみましょう。

mysql> select *from RandomNumberDemo;

実行結果は以下の通りです。MyNumberが18だった行が、30〜300の範囲の乱数(今回は158)が加算された値に更新されていることがわかります。

+----------+
| MyNumber |
+----------+
|       17 |
|      158 |
|       29 |
+----------+
3 rows in set (0.00 sec)

まとめ

MySQLで既存のカラムに特定範囲の乱数を加算したい場合は、FLOOR(RAND() * (最大値 - 最小値 + 1)) + 最小値という式をUPDATE文と組み合わせるだけで実現できます。WHERE句を外せば全レコードへ一括適用することも可能なので、テストデータの生成やダミー値の投入など、さまざまな場面で活用できます。

  1. MySQLでランダムな4桁の数値を生成する方法を解説

    MySQLでランダムな4桁の数値を生成するには?MySQLでは、RAND()関数とFLOOR()関数を組み合わせることで、ランダムな4桁の数値を簡単に生成できます。基本的な構文は以下の通りです。SELECT FLOOR(0 + RAND() * 10000);RAND()は0以上1未満のランダムな浮動小数点数を返し、それに10000を掛けることで0〜9999の範囲の値を生成します。FLOOR()で小数点以下を切り捨てることで、整数の4桁の数値が得られます。実際に、テーブルのカラムへランダムな4桁の数値を設定する手順を見ていきましょう。1. テーブルを作成するまず、サンプル用のテーブルを作成しま

  2. MySQLの1つのクエリで日付に1年と2日を追加する方法

    MySQLで日付に1年と2日を同時に加算したい場合は、DATE_ADD関数とINTERVALを組み合わせます。DATE_ADD関数を入れ子(ネスト)にするのがポイントです。ここでは、実際にテーブルを作成してサンプルデータを操作しながら、手順を詳しく解説します。 1. サンプルテーブルを作成する まず、日付(DATE型)を格納するカラムを持つテーブルを作成します。 mysql> create table DemoTable1376 -> ( -> AdmissionDate date -> ); Query OK, 0 rows affected