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句を追加すれば、特定の行だけを乱数で更新することもできるので、用途に応じて使い分けると便利です。
-
JavaでMySQLデータベースのレコードを更新する方法【UPDATE文の使い方を実例で解説】
MySQLデータベースのテーブルに格納されたデータを更新するには、UPDATEコマンドを使用します。本記事では、UPDATE文の基本構文から、実際にテーブルを作成し、Java(JDBC)経由でレコードを更新するまでの一連の手順を、サンプルコード付きで詳しく解説します。 UPDATE文の基本構文 MySQLで既存のデータを更新する場合、以下の構文を使用します。 update テーブル名 set カラム名1 = 値1, ....N where 条件; where句で条件を指定しないと、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。 ステップ1:テーブルの作成 まずは更新用のサン
-
JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説
ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ