Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用随机值更新列_Mysql_Sql_Random_Sql Update - Fatal编程技术网

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