如何在mysql中插入随机值?

时间:2011-08-20 03:12:06

标签: mysql random insert

看起来兰德是我需要的东西,但我在理解它是如何工作方面遇到了一些麻烦。

我需要在60到120之间插入几千行的随机数。表名是:列表,列名是:hits

你可以帮忙吗?

4 个答案:

答案 0 :(得分:22)

要生成一个介于60和120之间的随机整数,您需要对RAND()的结果进行一些算术运算,该结果只生成浮点值:

SELECT FLOOR(60 + RAND() * 61);

那么这里发生了什么:

RAND()将生成类似0.847269199的值。我们乘以61,这给我们的值51.83615194。我们加60,因为这是你想要的偏移量高于零(111.83615194)。 FLOOR()将整个事物舍入到最接近的整数。最后,你有111。

要在几千个现有行中执行此操作:

UPDATE table SET randcolumn = FLOOR(60 + RAND() * 61) WHERE (<some condition if necessary>);

有关更多示例,请参阅the MySQL docs on RAND()

注意我认为我的算术运算正确,但如果您在预期范围之外得到59或121的值,请相应地向上或向下更改+60

答案 1 :(得分:3)

以下是如何获取范围内的随机数。以下可能有点含糊不清,因为61实际上是你的最大值(120)减去你的最小值(60)+ 1来获得包容性结果。

SELECT FLOOR(60 + (RAND() * 61));

SELECT FLOOR(MIN_Value + (RAND() * (MAX_Value - MIN_Value) + 1);

http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand

答案 2 :(得分:1)

UPDATE X SET C = FLOOR(61 * RAND() + 60) WHERE ...;

获得60到120之间的数字(包括60和120);

RAND()在区间[0; 1)中创建一个数字(不包括1)。所以61 * RAND()在[0,61]中产生一个数字。 61 * RAND()+ 60在[60; 121]中通过向下舍入,确保您的数字确实在[60; 120]。

答案 3 :(得分:0)

当我遇到这种问题时,我尝试了手册,但我有超过500行, 我在逻辑上带来了一个帮助我的技巧,因为如果你在查询时运行RAND, 由于重复项或OR PRIMARY KEY问题,您最终可能会收到错误报告,特别是如果该列是PRIMARY KEYAUTO INCREMENT

  1. 首先 - 我重命名了相关列,例如我的是ID - &gt; IDS
  2. 其次 - 我创建了另一个列并将其称为ID
  3. 第三 - 我RAN此代码
  4.   

    更新历史记录SET id = FLOOR(217 + RAND()* 2161)

    这会自动创建一个随机数,之后我删除了重命名的IDS colume

    来自MICHAEL的信誉。 谢谢