mysql rand(x)生产重复随机序列

时间:2010-12-03 16:01:00 

比如有一个需求,通过sql语句,返回-5至5的随机整数.如果这一个放在PHP中,则非常简单直接用


print rand(-5,5);

?>

在mysql中,rand函数只能有一个参数. //摘自手册

RAND() RAND(N)

返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。

有两个方法可以达成以上效果.

1.新建一个表,里面存着 -5 至 5 之间的数.再利用order by rand()得到随机数.

#建立指定范围数据表

#auther: 小强(占卜师)

#date: 2008-03-31

create table randnumber

select -1 as number

union

select -2

union

select -3

union

select -4

union

select -5

union

select 0

union

select 1

union

select 2

union

select 3

union

select 4

union

select 5

#得到随机数

#auther: 小强(占卜师)

#date: 2008-03-31

select number

from randnumber order by rand() limit 1

优点: 随机数可以指定某部分数据,并不需要连续的.

缺点: 当随机数范围很广的时候,建表比较困难.

2.利用MySQL的ROUND()加上RAND()函数实现

#一句sql语句搞定

#auther: 小强(占卜师)

#date: 2008-03-31

SELECT ROUND((0.5-RAND())*2*5)

#注释

#0.5-rand()可以得到-0.5 至 +0.5的随机数

#(0.5-rand())*2可以得到-1 至 +1的随机数

#(0.5-rand())*2*5可以得到-5 至 +5的随机数

#ROUND((0.5-RAND())*2*5)可以得到-5 至 +5的随机整数

优点: 当随机数范围很广的时候,只需要更改*5当中的5即可,非常方便.

缺点: 随机数只能是连续的,不可以指定某部分数据.

原创文章,欢迎转载。转载请注明来自[phpchina.com]即可。

标签:mysql,rand,随机
0
投稿

猜你喜欢

  • 增加 javascript 的 trim 函数

    2008-04-20 16:54:00
  • Oracle 数据 使用游标

    2009-07-02 12:14:00
  • SQL 统计一个数据库中所有表记录的数量

    2012-01-29 18:21:36
  • Windows Server 2008之数据安全保护

    2008-12-04 12:49:00
  • xmlHttp msxml3.dll 错误 '800c0008' 解决办法

    2008-08-31 20:44:00
  • 设计原则-控件Balloons(气球状提示)

    2009-08-15 12:34:00
  • 边框样式的写法总结

    2009-01-18 13:00:00
  • 如何使用表格来储存数据库的记录?

    2010-05-16 15:14:00
  • CSS教程:关于网页图片的属性的介绍

    2008-10-31 12:02:00
  • 垂直无缝滚动图片(兼容性好)实例教程源码下载

    2010-04-06 12:16:00
  • Dreamweaver行为体验

    2007-02-03 11:39:00
  • ASP模拟POST提交数据的方法

    2010-01-14 20:06:00
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页

    2009-03-04 10:56:00
  • Oracle不同数据库间对比分析脚本

    2010-07-26 13:24:00
  • 后工业时代的后规范思考

    2009-06-03 20:30:00
  • MySQL的添加用户的两种方法

    2012-01-29 17:50:10
  • 未知高度的图片垂直居中

    2010-12-17 12:36:00
  • 定义列表 dt dl

    2008-08-03 17:14:00
  • 仿淘宝星级评分效果

    2010-09-03 18:37:00
  • 如何用ASP建立Index Server查询对象并为其参数赋值?

    2010-06-11 19:59:00
  • asp之家 网络编程 m.aspxhome.com