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

MySQLで1〜3のランダムな数値を使ってカラムを更新する方法

1〜3の乱数でカラムを更新する基本構文

MySQLでカラムの値を1から3までの範囲内のランダムな数値に更新するには、RAND()関数とFLOOR()関数を組み合わせて使用します。基本となる構文は以下のとおりです。

UPDATE テーブル名 SET カラム名 = FLOOR(1 + RAND() * 3);

RAND()は0以上1未満の浮動小数点数を返すため、これに3を掛けて1を加えることで「1以上4未満」の値が得られます。さらにFLOOR()で小数点以下を切り捨てることで、結果として1・2・3のいずれかの整数が生成されます。

動作確認用テーブルの作成

まず、実際に構文を試すためのサンプルテーブルを作成しましょう。テーブル作成クエリは次のとおりです。

mysql> CREATE TABLE UpdateNumber1To3
-> (
-> MyNumber int
-> );
Query OK, 0 rows affected (0.61 sec)

テストデータの挿入

続いて、INSERTコマンドを使っていくつかのレコードを挿入します。

mysql> INSERT INTO UpdateNumber1To3 VALUES(100);
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO UpdateNumber1To3 VALUES(140);
Query OK, 1 row affected (0.25 sec)

mysql> INSERT INTO UpdateNumber1To3 VALUES(130);
Query OK, 1 row affected (0.15 sec)

登録データの確認

SELECT文ですべてのレコードを表示し、データが正しく登録されているかを確認します。

mysql> SELECT * FROM UpdateNumber1To3;

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

+----------+
| MyNumber |
+----------+
|      100 |
|      140 |
|      130 |
+----------+
3 rows in set (0.00 sec)

乱数によるカラムの一括更新

ここで、MyNumberカラムの値を1〜3のランダムな整数に更新します。実行するクエリは以下のとおりです。

mysql> UPDATE UpdateNumber1To3 SET MyNumber = FLOOR(1 + RAND() * 3);
Query OK, 3 rows affected (0.19 sec)
Rows matched: 3 Changed: 3 Warnings: 0

※ 注意点として、UPDATE文で指定するカラム名は、テーブル作成時に定義した「MyNumber」と一致させてください。存在しないカラム名を指定するとエラーになります。

更新後の結果確認

もう一度SELECT文を実行して、更新後のデータを確認してみましょう。

mysql> SELECT * FROM UpdateNumber1To3;

更新後の出力例は以下のとおりです。RAND()は実行のたびに異なる値を返すため、数値は都度変化します。

+----------+
| MyNumber |
+----------+
|        1 |
|        2 |
|        1 |
+----------+
3 rows in set (0.00 sec)

まとめ

FLOOR(1 + RAND() * 3)を使えば、MySQLの既存レコードを1〜3のランダムな整数で簡単に一括更新できます。この手法は任意の範囲にも応用でき、たとえばNからMまでの乱数を生成したい場合はFLOOR(N + RAND() * (M - N + 1))という形式に置き換えるだけで対応可能です。テストデータの準備やダミー値の設定など、さまざまな場面で活用できる便利なテクニックなので、ぜひ覚えておきましょう。

  1. JavaのPreparedStatementを使ってMySQLテーブルを更新する方法

    JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a

  2. MySQLの1つのUPDATE文で2つの列を同時に更新する方法

    はじめにMySQLでは、1つのUPDATE文の中でSET句を一度だけ使えば、複数の列を同時に更新できます。各列の指定はカンマ(,)で区切って記述します。この記事では、実際にテーブルを作成し、1つのクエリで2つの列(FirstNameとLastName)を更新する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1909 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20)