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()来随机化一组行或值如下:
为了理解ORDER BY rand()函数,考虑一个employee_tbl表,其具有以下记录:
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)
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加3个群。
- Java技术群: 227270512 (人数:2000,等级:LV5,免费:否)
- MySQL/SQL群: 418407075 (人数:2000,等级:LV5,免费:否)
- 大数据开发群: 655154550 (人数:2000,等级:LV5,免费:否)
- Python技术群: 287904175 (人数:2000,等级:LV5,免费:否)
- 人工智能深度学习: 456236082 (人数:2000,等级:LV5,免费:否)
- 测试工程师(新群): 415553199 (人数:1000,等级:LV1,免费:是)
- 前端技术群(新群): 410430016 (人数:1000,等级:LV1,免费:是)
- C/C++技术(新群): 629264796 (人数:1000,等级:LV1,免费:是)
- Node.js技术(新群): 621549808 (人数:1000,等级:LV1,免费:是)
- PostgreSQL数据库(新群): 539504187 (人数:1000,等级:LV1,免费:否)
- Linux技术: 479429477 (人数:2000,等级:LV5,免费:否)
- PHP开发者: 460153241 (人数:2000,等级:LV5,免费:是)
- Oracle数据库: 175248146 (人数:2000,等级:LV5,免费:是)
- C#/ASP.Net开发者: 579821706 (人数:2000,等级:LV5,免费:是)
- 数据分析师: 397883996 (人数:1000,等级:LV1,免费:是)R语言,Matlab语言等技术