Mysql 使用随机值更新列
我有一张桌子:Mysql 使用随机值更新列,mysql,sql,random,sql-update,Mysql,Sql,Random,Sql Update,我有一张桌子: ID | VALUE | DATE 1 | 5 | 2012-10-01 2 | 7 | 2012-10-02 3 | 3 | 2012-10-05 4 | 0 | 2012-05-07 我想在当前值的顶部添加一个随机值,该值分别介于1和5之间 比如说: ID | VALUE | RANDOM VALUE 1 | 5 | 0 2 | 7 | 2 3 | 3 | 3 4 | 0 | 6 新价值
ID | VALUE | DATE
1 | 5 | 2012-10-01
2 | 7 | 2012-10-02
3 | 3 | 2012-10-05
4 | 0 | 2012-05-07
我想在当前值的顶部添加一个随机值,该值分别介于1和5之间
比如说:
ID | VALUE | RANDOM VALUE
1 | 5 | 0
2 | 7 | 2
3 | 3 | 3
4 | 0 | 6
新价值
ID | VALUE
1 | 5
2 | 9
3 | 6
4 | 6
我该怎么做?我所能想到的就是执行游标类型的查询
有什么帮助吗?试试看
UPDATE TABLE SET VALUE=VALUE+ROUND(1+RAND()*4);
这将通过1到5之间的随机值更新该值
UPDATE TABLEA SET VALUE=FLOOR(RAND()*5)+1
事实上需要随机更新每个记录,而不是使用1个随机更新所有记录value@dcalliances:RAND函数是不确定的,因此,将为每个更新的记录重新计算它-请参阅表中的行数?如果你有超过5行呢?实际上。。需要随机更新每条记录而不是使用1个随机值更新所有记录我认为集合表达式的RHS将在每一行进行计算。但如果我碰巧错了,请尝试以下方法:更新表集合值=VALUE+ROUND1+RAND*4-VALUE;由于该值似乎取决于优化器的观点,因此必须为每一行运行…@ppeterka:RAND函数是不确定的,因此,将为每个更新的记录重新计算它-请参见。@eggyal我也这么认为,但不确定,我现在没有MySQL来尝试它,这就是为什么我提供了一个可以绕过理论问题的解决方案…@ppeterka:不过几乎接近了。我可以看到更新表SET VALUE=VALUE+ROUND1+RAND*4-VALUE它给了我每条记录的每个随机值。但我想从前面的值中添加,例如,实例ID=5有5个值,在随机设置2之后,让我们假设值为5+2=7示例如下-尝试此更新table1 SET value=select RAND from table1 as innertable,其中table1.ID=innertable.ID