MySQL使用rand函数实现随机数

sql 的随机函数newID()和RAND()

sql server的随机函数newID()和RAND()  

  SELECT * FROM Northwind..Orders ORDER BY NEWID()

  --随机排序

  SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID()

  --从Orders表中随机取出10条记录  

  示例  

  A.对变量使用 NEWID 函数

  以下示例使用 NEWID() 对声明为 uniqueidentifier 数据类型的变量赋值。在测试 uniqueidentifier 数据类型变量的值之前,先输出该值。

  -- Creating a local variable with DECLARESET syntax.

  DECLARE @myid uniqueidentifier

  SET @myid = NEWID()

  PRINT 'Value of @myid is '+ CONVERT(varchar(255), @myid)

  下面是结果集:

  Value of @myid is 6F9619FF-8B86-D011-B42D-00C04FC964FF

  注意:

  NEWID 对每台计算机返回的值各不相同。所显示的数字仅起解释说明的作用。  

  随机函数:rand()

  在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数。那就看下面的两种随机取整数的方法:   

  1、

  A:select floor(rand()*N) ---生成的数是这样的:12.0

  B:select cast( floor(rand()*N) as int) ---生成的数是这样的:12   

  2、

  A:select ceiling(rand() * N) ---生成的数是这样的:12.0

  B:select cast(ceiling(rand() * N) as int) ---生成的数是这样的:12   

  其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了。

大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:

  方法1的数字范围:0至N-1之间,如cast( floor(rand()*100) as int)就会生成0至99之间任一整数

  方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数

  对于这个区别,看SQL的联机帮助就知了:  

  比较 CEILING 和 FLOOR

   CEILING 函数返回大于或等于所给数字表达式的最小整数。FLOOR 函数返回小于或等于所给数字表达式的最大整数。例如,对于数字表达式 12.9273,CEILING 将返回 13,FLOOR 将返回 12。FLOOR 和 CEILING 返回值的数据类型都与输入的数字表达式的数据类型相同。

  现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^   

  另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():

  select top N * from table_name order by newid() ----N是一个你指定的整数,表是取得记录的条数.

access中的函数为Rnd()

SELECT top 10 表1.*, Rnd(id) AS bb FROM 表1 ORDER BY Rnd(id)

SELECT Rnd(id) as me,Rnd() as you from 表1

Select top 10 Tb_PESS_Paper.* FROM Tb_PESS_Paper orDER BY Rnd(isnull(id)*0+1);

http://blog.csdn.net/dainiao01/article/details/2865383

 

时间: 2024-11-26 23:47:30

MySQL使用rand函数实现随机数的相关文章

MySQL rand函数实现随机数的方法_Mysql

需要测试MYSQL数据库,里面有一个上万条数据的数据库,如何写一个PHP文件一下每次更新几百条信息,我都是写一个循环一次更新一条信息,这样我知道用WHILE写就可以了,要是一次更新好比100条数据改如何写呢!正确答案是使用MySQL rand函数:UPDATE cdb_posts SET views = rand();顺便给你找了点关于mysql rand函数的实例,如下:那就在insert 命令中,value()里面用rand(),注意字段宽度是否够一直以为mysql随机查询几条数据,就用SE

mysql不用rand()函数实现随机读取数据库记录的方法

mysql教程不用rand()函数实现随机读取数据库教程记录的方法 ,以及google了一下相关的文件,发现大家几乎清一色使用 order by rand() 来达到该目的,但是实际上存在非常严重的性能问题. 如果你的数据库里只有几百条,且调用次数又不多的情况下,你爱用啥方法就用啥方法. 但如果你有10万或100万或更多条数据的话,那么每次执行带 order by rand() 的 sql 语句的时候,mysql服务器需要计算出10万或100万或更多个随机数,可想而知对数据库服务器的资源浪费有多

怎样用Excel中的RAND函数产生随机数

当我们需要产生一些随机数,如单位的抽奖,购买体育彩票前的选号等,我们可以利用 Excel 中的RAND函数来产生这些随机数.RAND函数能够返回大于等于0小于1的均匀分布随机数,每次计算工作表时都将返回一个新的数值.我们只要将RAND()与INT函数组合起来,就能够产生各种位数的随机数了. "=INT(RAND()*10)"    产生0到10之间的任意自然数 "=INT(RAND()*100)"  产生0到100之间的任意自然数 -- 由此,我们只需要在7(或其他

MySQL中rand函数随机取数据介绍

 代码如下 复制代码 SELECT * FROM table_name ORDER BY rand() LIMIT 5; rand在手册里是这么说的: RAND() RAND(N) 返回在范围0到1.0内的随机浮点值.如果一个整数参数N被指定,它被用作种子值.  代码如下 复制代码 mysql> select RAND();         -> 0.5925 mysql> select RAND(20);         -> 0.1811 mysql> select RA

MySQL中的RAND()函数使用详解_Mysql

MySQL RAND()函数调用可以在0和1之间产生一个随机数: mysql> SELECT RAND( ), RAND( ), RAND( ); +------------------+-----------------+------------------+ | RAND( ) | RAND( ) | RAND( ) | +------------------+-----------------+------------------+ | 0.45464584925645 | 0.18244

MySQL中rand 生成随机数代码

要随机生成字符串代码如下: 在mysql教程中定义一个随机串的方法,然后再sql语句中调用此方法. 随机串函数定义方法: select round(round(rand(),4)*10000); 不用函数直接这样就好了. 非得写函数的话,就 delimiter $$ create     function get_rand()     returns int deterministic     begin  declare return_no int;  select round(round(r

MySQL中的RAND()函数使用详解

  这篇文章主要介绍了MySQL中的RAND()函数使用详解,是MySQL入门学习中的基础知识,需要的朋友可以参考下 MySQL RAND()函数调用可以在0和1之间产生一个随机数: ? 1 2 3 4 5 6 7 mysql> SELECT RAND( ), RAND( ), RAND( ); +------------------+-----------------+------------------+ | RAND( ) | RAND( ) | RAND( ) | +----------

excel随机数rand函数的使用方法

当我们需要产生一些随机数,如单位的抽奖,购买体育彩票前的选号等,我们可以利用Excel中的RAND函数来产生这些随机数.RAND函数能 够返回大于等于0小于1的均匀分布随机数,每次计算工作表时都将返回一个新的数值.我们只要将RAND()与INT函数组合起来,就能够产生各种位数的随 机数了. "=INT(RAND()*10)" 产生0到10之间的任意自然数 "=INT(RAND()*100)" 产生0到100之间的任意自然数 -- 由此,我们只需要在7(或其他大小)个

mysql 随机RAND和GROUP BY优化

最近看到一篇文章关于mysql的优化的,其中两个块内容平时用到的优化方法,记录和分享一下 group by 优化 SELECT goods_id,count(*) FROM t GROUP BY goods_id; 默认情况下,MySQL对所有GROUP BY col1,col2-的字段进行排序.如果查询包括GROUP BY,想要避免排序结果的消耗,则可以指定ORDER BY NULL禁止排序. 修改成 SELECT goods_id,count(*) FROM t GROUP BY goods