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

MySQLでテーブルの値をシャッフルする方法:RAND()関数を使ったランダム並び替え

MySQLでテーブル内の値(行)の順序をランダムに入れ替えたい場合は、RAND()関数ORDER BY句を組み合わせることで簡単に実現できます。

テーブルの作成

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

mysql> create table DemoTable792 (
   Name varchar(100),
   Subject varchar(100)
);
Query OK, 0 rows affected (0.66 sec)

レコードの挿入

次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable792 values('Chris','MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable792 values('David','MySQL');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable792 values('Robert','MongoDB');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable792 values('Carol','MongoDB');
Query OK, 1 row affected (0.18 sec)

挿入したレコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable792;

以下のような出力が得られます。

+--------+---------+
| Name   | Subject |
+--------+---------+
| Chris  | MySQL   |
| David  | MySQL   |
| Robert | MongoDB |
| Carol  | MongoDB |
+--------+---------+
4 rows in set (0.00 sec)

RAND()関数で行をシャッフルする

テーブル内の値をランダムにシャッフルするには、次のようにORDER BY RAND()を使用します。

mysql> select *from DemoTable792 order by rand();

実行するたびに行の順序がランダムに変化し、以下のように出力されます。

+--------+---------+
| Name   | Subject |
+--------+---------+
| Chris  | MySQL   |
| Robert | MongoDB |
| David  | MySQL   |
| Carol  | MongoDB |
+--------+---------+
4 rows in set (0.00 sec)

補足:RAND()使用時の注意点

ORDER BY RAND()はクエリを実行するたびに異なる順序で結果を返します。また、すべての行に対して乱数を生成してソートするため、レコード数が非常に多いテーブルではパフォーマンスが低下する場合があります。小規模〜中規模のテーブルでのランダム抽出やシャッフルに適した方法です。

  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. JavaでMySQLテーブルのカラム数を取得・カウントする方法

    MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable     -> (     -> St