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

MySQLでRAND()関数を使ってカラムのレコードを乱数で更新する方法

MySQLでは、RAND()関数とCAST()を組み合わせることで、カラムのレコードをランダムな数値で一括更新できます。この記事では、実際のSQL例とともにその手順をわかりやすく解説します。

ステップ1:テーブルを作成する

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable746 (
   Number int
);
Query OK, 0 rows affected (0.56 sec)

ステップ2:レコードを挿入する

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

mysql> insert into DemoTable746 values(100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable746 values(200);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable746 values(300);
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable746 values(400);
Query OK, 1 row affected (0.20 sec)

ステップ3:レコードを確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable746;

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

+--------+
| Number |
+--------+
| 100    |
| 200    |
| 300    |
| 400    |
+--------+
4 rows in set (0.00 sec)

乱数を使ってレコードを更新する

ここが本題です。RAND()関数は0以上1未満の浮動小数点数を返すため、10000を掛けることで0〜9999の範囲の値を生成できます。さらにCAST(... AS UNSIGNED)で整数に変換し、UPDATE文で全レコードを一括更新します。

mysql> update DemoTable746 set Number=CAST(RAND() * 10000 AS UNSIGNED);
Query OK, 4 rows affected (0.13 sec)
Rows matched: 4 Changed: 4 Warnings: 0

更新結果の確認

もう一度テーブルのレコードを確認してみましょう。

mysql> select *from DemoTable746;

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

+--------+
| Number |
+--------+
| 4422   |
| 1350   |
| 3485   |
| 3371   |
+--------+
4 rows in set (0.00 sec)

補足:特定の範囲の乱数を生成したい場合

より広い範囲の乱数が必要な場合は、掛ける数値を調整します。例えば、0〜999999の範囲で更新したい場合は以下のように記述します。

mysql> update DemoTable746 set Number=FLOOR(RAND() * 1000000);

なお、FLOOR()関数を使えばCASTを省略して直接整数値を得ることも可能です。WHERE句を追加すれば、特定の行だけを乱数で更新することもできるので、用途に応じて使い分けると便利です。

  1. JavaでMySQLデータベースのレコードを更新する方法【UPDATE文の使い方を実例で解説】

    MySQLデータベースのテーブルに格納されたデータを更新するには、UPDATEコマンドを使用します。本記事では、UPDATE文の基本構文から、実際にテーブルを作成し、Java(JDBC)経由でレコードを更新するまでの一連の手順を、サンプルコード付きで詳しく解説します。 UPDATE文の基本構文 MySQLで既存のデータを更新する場合、以下の構文を使用します。 update テーブル名 set カラム名1 = 値1, ....N where 条件; where句で条件を指定しないと、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。 ステップ1:テーブルの作成 まずは更新用のサン

  2. JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説

    ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ