登录 |  注册
首页 >  数据库 >  SQL >  SQL RAND()函数

SQL RAND()函数

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)
上一篇: SQLSQRT()函数
下一篇: SQLCONCAT()函数
推荐文章
  • mysql只支持一种join算法:Nested-LoopJoin(嵌套循环连接),但Nested-LoopJoin有三种变种:SimpleNested-LoopJoin,IndexNested-LoopJoin,BlockNested-LoopJoin(简单-索引-缓冲区)原理:1.SimpleNe
  • redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要redis持久化 redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制redis提供两种持久化机制RDB:存储数据结果,关注点在数据AOF:存储操作
  • 通过SQL的执行过程来介绍MySQL的基础结构.     首先有一个user_info表,表里有一个id字段,执行下面这条查询语句:Select * form user_info where i
  • 索引(Index)是帮助MySQL高效获取数据的数据结构,索引的目的在于提高查询效率,就像字典和书籍的目录一样,有了目录,可以帮助你快速查找你需要的内容。可以理解为一个排好序的快速查找数据结构。也就是
  • 说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。今天我们就先来聊聊MySQL中事务的隔离性的实现原理,后续还会继续出文章分析其他特性的
  • 前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句
学习大纲