RAND()函数在mysql中是取随机数。范围是[0,1]。
mysql> select rand();
+——————+
| rand() |
+——————+
| 0.47331121980521 |
+——————+
1 row in set (0.00 sec)
mysql> select rand();
+——————+
| rand() |
+——————+
| 0.37024365586251 |
+——————+
1 row in set (0.00 sec)
其实它还有两个妙用:
1.取随机正数:
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:
SELECT FLOOR(7 + (RAND() * 6));
2.与limit配合,取随机数据。格式是:select * from an_idb3 order by rand() limit 5;
原表数据:
mysql> select * from an_idb3;
+——+——+————–+
| id | name | email |
+——+——+————–+
| 1 | an | an@mail.com |
| 2 | an2 | an2@mail.com |
| 1 | an | an@mail.com |
| 2 | an | an@mail.com |
| 3 | an | an@mail.com |
| 5 | an5 | an@mail.com |
| 6 | an6 | an@mail.com |
| NULL | an7 | an7@mail.com |
| NULL | NULL | NULL |
+——+——+————–+
9 rows in set (0.00 sec)
取两组随机数(每组5条):
mysql> select * from an_idb3 order by rand() limit 5;
+——+——+————-+
| id | name | email |
+——+——+————-+
| 5 | an5 | an@mail.com |
| NULL | NULL | NULL |
| 6 | an6 | an@mail.com |
| 3 | an | an@mail.com |
| 1 | an | an@mail.com |
+——+——+————-+
5 rows in set (0.00 sec)
mysql> select * from an_idb3 order by rand() limit 5;
+——+——+————-+
| id | name | email |
+——+——+————-+
| 1 | an | an@mail.com |
| NULL | NULL | NULL |
| 1 | an | an@mail.com |
| 5 | an5 | an@mail.com |
| 6 | an6 | an@mail.com |
+——+——+————-+
5 rows in set (0.00 sec)
本文结束,谢谢观赏
赞过:
赞 正在加载……
相关