SQL 有一个 RAND 函数,用于产生 0 至 1 之间的随机数:
SQL> SELECT RAND( ), RAND( ), RAND( );
+------------------+-----------------+------------------+
| RAND( ) | RAND( ) | RAND( ) |
+------------------+-----------------+------------------+
| 0.45464584925645 | 0.1824410643265 | 0.54826780459682 |
+------------------+-----------------+------------------+
1 row in set (0.00 sec)
当以某个整数值作为参数来调用的时候,RAND() 会将该值作为随机数发生器的种子。对于每一个给定的种子,RAND() 函数都会产生一列可以复现的数字:
SQL> 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() 来对一组记录进行随机化排列,如下所示:
SQL> 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)
现在,试试下面的命令:
SQL> 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)
SQL> SELECT * FROM employee_tbl ORDER BY 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)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
长按识别二维码并关注微信
更方便到期提醒、手机管理