MySQLテーブルからn行のデータをランダムに返す
備考:テストデータベースバージョンはMySQL 8.0
scottユーザーがテーブルを作成し、データ文を入力する必要がある場合は、scottテーブルおよびデータsqlスクリプトを参照してください.
質問:テーブルからnレコードをランダムに返します.次の文は、次回の実行時に異なる結果セットを生成するように変更できます.
ソリューション:rand関数、limit、order byを同時に使用します.
scottユーザーがテーブルを作成し、データ文を入力する必要がある場合は、scottテーブルおよびデータsqlスクリプトを参照してください.
質問:テーブルからnレコードをランダムに返します.次の文は、次回の実行時に異なる結果セットを生成するように変更できます.
select ename,job from emp;
mysql> select ename,job from emp;
+--------+-----------+
| ename | job |
+--------+-----------+
| SMITH | CLERK |
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| JONES | MANAGER |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| SCOTT | ANALYST |
| KING | PRESIDENT |
| TURNER | SALESMAN |
| ADAMS | CLERK |
| JAMES | CLERK |
| FORD | ANALYST |
| MILLER | CLERK |
+--------+-----------+
14 rows in set (0.00 sec)
ソリューション:rand関数、limit、order byを同時に使用します.
select ename,job from emp order by rand() limit 5;
mysql> select ename,job from emp order by rand() limit 5;
+-------+-----------+
| ename | job |
+-------+-----------+
| JAMES | CLERK |
| FORD | ANALYST |
| KING | PRESIDENT |
| CLARK | MANAGER |
| ADAMS | CLERK |
+-------+-----------+
5 rows in set (0.00 sec)
--
mysql> select ename,job from emp order by rand() limit 5;
+--------+----------+
| ename | job |
+--------+----------+
| SMITH | CLERK |
| WARD | SALESMAN |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| JAMES | CLERK |
+--------+----------+
5 rows in set (0.00 sec)