RAND()
RAND(N)
返回一个范围在 0 到 1.0 之间的随机浮点值。如果一个整数参数 N 被指定,它被当做种子值使用(用于产生一个可重复的数值):
mysql> SELECT RAND();
-> 0.9233482386203
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND();
-> 0.63553050033332
mysql> SELECT RAND();
-> 0.70100469486881在一个 ORDER BY 子句中,不可以使用 RAND() 值使用一个列,因为 ORDER BY 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:SELECT * FROM table_name ORDER BY RAND(),这有利于得到一个来自 SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000 的集合中的随机样本。 注意,在一个 WHERE 子句中的 RAND() 将在每次 WHERE 执行时被重新计算。 RAND() 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个快速的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。
RAND(N)
返回一个范围在 0 到 1.0 之间的随机浮点值。如果一个整数参数 N 被指定,它被当做种子值使用(用于产生一个可重复的数值):
mysql> SELECT RAND();
-> 0.9233482386203
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND();
-> 0.63553050033332
mysql> SELECT RAND();
-> 0.70100469486881在一个 ORDER BY 子句中,不可以使用 RAND() 值使用一个列,因为 ORDER BY 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:SELECT * FROM table_name ORDER BY RAND(),这有利于得到一个来自 SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000 的集合中的随机样本。 注意,在一个 WHERE 子句中的 RAND() 将在每次 WHERE 执行时被重新计算。 RAND() 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个快速的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。
1-10随机整数ROUND(RAND()*2147483647+0.5)
随机int值
Query OK, 0 rows affected (0.06 sec)mysql> delimiter //
mysql> create procedure randtest(param int)
-> begin
-> declare v int default 1;
-> while(v<param)
-> do
-> insert into myrand values(v,rand()*1000);
-> set v=v+1;
-> end while;
-> end
-> //
Query OK, 0 rows affected (0.08 sec)mysql> delimiter ;
mysql> call randtest(200);
Query OK, 1 row affected (0.25 sec)mysql> select * from myrand;
+-----+--------+
| id | randed |
+-----+--------+
| 1 | 654 |
| 2 | 219 |
| 3 | 135 |
| 4 | 17 |
| 5 | 680 |
| 6 | 347 |
| 7 | 698 |
| 8 | 450 |
| 9 | 153 |
| 10 | 417 |
| 11 | 625 |
| 12 | 876 |
| 13 | 504 |
| 14 | 893 |
| 15 | 954 |
| 16 | 90 |
| 17 | 587 |
| 18 | 664 |
| 19 | 559 |
| 20 | 803 |
.....................