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句を外せば全レコードへ一括適用することも可能なので、テストデータの生成やダミー値の投入など、さまざまな場面で活用できます。
-
MySQLでランダムな4桁の数値を生成する方法を解説
MySQLでランダムな4桁の数値を生成するには?MySQLでは、RAND()関数とFLOOR()関数を組み合わせることで、ランダムな4桁の数値を簡単に生成できます。基本的な構文は以下の通りです。SELECT FLOOR(0 + RAND() * 10000);RAND()は0以上1未満のランダムな浮動小数点数を返し、それに10000を掛けることで0〜9999の範囲の値を生成します。FLOOR()で小数点以下を切り捨てることで、整数の4桁の数値が得られます。実際に、テーブルのカラムへランダムな4桁の数値を設定する手順を見ていきましょう。1. テーブルを作成するまず、サンプル用のテーブルを作成しま
-
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