Mysql-rand-function

提供:Dev Guides
移動先:案内検索

MySQL-RAND関数

MySQLには、0〜1の乱数を生成するために呼び出すことができる RAND 関数があります-

mysql>  SELECT RAND( ), RAND( ), RAND( );
+------------------+-----------------+------------------+
|      RAND( )     |      RAND( )    |      RAND( )     |
+------------------+-----------------+------------------+
| 0.45464584925645 | 0.1824410643265 | 0.54826780459682 |
+------------------+-----------------+------------------+
1 row in set (0.00 sec)

整数の引数で呼び出された場合、RAND()はその値を使用して乱数ジェネレーターをシードします。 あなたが与えられた値でジェネレータをシードするたびに、RAND()は、数字の繰り返し可能なシリーズを生成します-

mysql>  SELECT RAND(1), RAND( ), RAND( );
+------------------+------------------+------------------+
|     RAND(1 )     |      RAND( )     |      RAND( )     |
+------------------+------------------+------------------+
| 0.18109050223705 | 0.75023211143001 | 0.20788908117254 |
+------------------+------------------+------------------+
1 row in set (0.00 sec)

あなたは次のように行または値のセットをランダム化するために* ORDER BY RAND()*を使用することができます-

  • ORDER BY RAND()関数を理解するために、次のレコードを持つ *employee_tbl テーブルを考えてください-
mysql> SELECT *FROM employee_tbl;
+------+------+------------+--------------------+
|  id  | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|   1  | John | 2007-01-24 |        250         |
|   2  | Ram  | 2007-05-27 |        220         |
|   3  | Jack | 2007-05-06 |        170         |
|   3  | Jack | 2007-04-06 |        100         |
|   4  | Jill | 2007-04-06 |        220         |
|   5  | Zara | 2007-06-06 |        300         |
|   5  | Zara | 2007-02-06 |        350         |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)

今、次のコマンドを使用します-

mysql> SELECT* FROM employee_tbl ORDER BY RAND();
+------+------+------------+--------------------+
|  id  | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|   5  | Zara | 2007-02-06 |        350         |
|   5  | Zara | 2007-06-06 |        300         |
|   3  | Jack | 2007-05-06 |        170         |
|   2  | Ram  | 2007-05-27 |        220         |
|   4  | Jill | 2007-04-06 |        220         |
|   5  | Zara | 2007-02-06 |        350         |
|   1  | John | 2007-01-24 |        250         |
+------+------+------------+--------------------+
7 rows in set (0.01 sec)

mysql> SELECT * FROM employee_tbl ORDER BY RAND();
+------+------+------------+--------------------+
|  id  | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|   5  | Zara | 2007-02-06 |        350         |
|   5  | Zara | 2007-06-06 |        300         |
|   3  | Jack | 2007-05-06 |        170         |
|   2  | Ram  | 2007-05-27 |        220         |
|   4  | Jill | 2007-04-06 |        220         |
|   5  | Zara | 2007-02-06 |        350         |
|   1  | John | 2007-01-24 |        250         |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)