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

MySQLでテーブルからランダムな値を3件表示する方法

MySQLのテーブルからランダムな値を取得したい場合は、RAND()関数を使用します。取得する件数はLIMIT句で指定します。今回は3件を取得する例を見ていきましょう。

select yourColumnName from yourTableName order by rand() limit 3;

それでは、実際にサンプルテーブルを作成しながら手順を確認していきます。

1. サンプルテーブルの作成

まず、create table文でテーブルを作成します。

mysql> create table DemoTable646 (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName varchar(100)
);
Query OK, 0 rows affected (0.76 sec)

2. レコードの挿入

次に、insert文を使って複数のレコードを挿入します。

mysql> insert into DemoTable646(FirstName) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable646(FirstName) values('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable646(FirstName) values('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable646(FirstName) values('David');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable646(FirstName) values('Bob');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable646(FirstName) values('Carol');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable646(FirstName) values('Mike');
Query OK, 1 row affected (0.10 sec)

3. 登録済みレコードの確認

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

mysql> select * from DemoTable646;

実行すると、次のような結果が得られます。

+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | John      |
|  2 | Bob       |
|  3 | Chris     |
|  4 | David     |
|  5 | Bob       |
|  6 | Carol     |
|  7 | Mike      |
+----+-----------+
7 rows in set (0.00 sec)

合計7件のレコードが登録されていることが確認できます。

4. ランダムな値を3件表示する

テーブルからランダムに3件の値を表示するには、次のようにORDER BY RAND()LIMIT 3を組み合わせます。

mysql> select FirstName from DemoTable646 order by rand() limit 3;

実行結果の例は以下のとおりです。実行するたびに異なる組み合わせが表示されます。

+-----------+
| FirstName |
+-----------+
| Mike      |
| John      |
| Chris     |
+-----------+
3 rows in set (0.00 sec)

仕組みの解説

RAND()関数は行ごとに0以上1未満のランダムな浮動小数点数を返します。ORDER BY RAND()とすることで、このランダムな値を基準に行の並び順をシャッフルでき、その先頭からLIMIT 3で3行だけ取り出す仕組みです。

注意点

ORDER BY RAND()は非常に手軽ですが、すべての行に対して乱数を計算し、並べ替えを行うため、レコード数が多い大規模なテーブルではパフォーマンスが低下しやすいという特徴があります。小規模〜中規模のテーブルであれば問題なく使えますが、大量データからランダム抽出したい場合は、主キーの最大値・最小値の間で乱数を生成して該当行を取得するなど、別の手法を検討するとよいでしょう。

  1. MySQLのストアドプロシージャでテーブルのレコードを表示する方法

    MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT

  2. Javaを使用してMySQLテーブルの値を表示する方法

    MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )