The MySQL RAND () function call can produce a random number between 0 and 1:
Mysql> SELECT rand (), RAND (), Rand ();
+------------------+-----------------+------------------+
| RAND () | RAND () | RAND () |
+------------------+-----------------+------------------+
| 0.45464584925645 | 0.1824410643265 | 0.54826780459682 |
+------------------+-----------------+------------------+
1 row in Set (0.00 sec)
When an integer argument is invoked, RAND () uses the random number generator seed value. Each time a given value seed is generated, RAND () produces a repeatable series of numbers:
Mysql> SELECT rand (1), Rand (), Rand ();
+------------------+------------------+------------------+
| RAND (1) | RAND () | RAND () |
+------------------+------------------+------------------+
| 0.18109050223705 | 0.75023211143001 | 0.20788908117254 |
+------------------+------------------+------------------+
1 row in Set (0.00 sec)
You can use ORDER by RAND (), with the group row or value as follows:
To understand the order by RAND () function, assume that the EMPLOYEE_TBL table has the following records:
Mysql> SELECT * from EMPLOYEE_TBL;
+------+------+------------+--------------------+
| id | name | work_date | daily_typing_pages
| +------+------+------------+--------------------+
| 1 | John | 2007-01-24 | The |
| 2 | Ram | 2007-05-27 | The |
| 3 | Jack | 2007-05-06 | 170 |
| 3 | Jack | 2007-04-06 | |
| 4 | Jill | 2007-04-06 | The |
| 5 | Zara | 2007-06-06 | A |
| 5 | Zara | 2007-02-06 | |
+------+------+------------+--------------------+
7 rows in Set (0.00 sec)
The following directories are now used:
Mysql> SELECT * from Employee_tbl ORDER by RAND (); +------+------+------------+--------------------+
| ID | name | Work_date |
Daily_typing_pages | +------+------+------------+--------------------+
| 5 | Zara | 2007-06-06 | 300 | | 3 | Jack | 2007-04-06 | 100 | | 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
RAND (); +------+------+------------+--------------------+
| ID | name | Work_date |
Daily_typing_pages | +------+------+------------+--------------------+
| 5 | Zara | 2007-02-06 | 350 | | 2 | Ram | 2007-05-27 | 220 | | 3 | Jack | 2007-04-06 | 100 | | 1 | John | 2007-01-24 | 250 | | 4 | Jill | 2007-04-06 | 220 | | 3 | Jack | 2007-05-06 | 170 | | 5 | Zara | 2007-06-06 |
300 | +------+------+------------+--------------------+ 7 rows in Set (0.00 sec)