2012-08-31 29 views
1

我试图简化这个,所以它更多的是一个实际代码的例子。我想获得一个随机数并使用它来修改多个值,但我需要通过相同的随机数修改所有值。SELECT RAND AS字段,同时选择由字段修改的其他值

我一般SELECT语句中去是这样的:

SELECT id, value1, value2 

,我想通过相同的随机数

我知道这不会工作,乘以每个值,因为它将使用2个不同的随机数字:

SELECT id, value1 * FLOOR(RAND()*10), value2 * FLOOR(RAND()*10) 

所以,我想这样的事情,但这是错误的,因为我不知道我在做什么:

SELECT id, FLOOR(RAND()*10) AS rmod, value1 * rmod, value2 * rmod 

我绝对需要阅读SQL中更高级的选择方法,也许有人可以指出我正确的方向?子查询我认为?我知道我可以做一些事情,例如在我的PHP代码中创建一个随机数字,然后将其拼接到SQL命令字符串中,但我特别寻找仅限于SQL的解决方案。

回答

0

考虑一下:

select @r:=rand(),@r; 

第一次调用兰特()设置变量@r其可以在随后的表达式中使用。在你的例子中:

SELECT id, value1 * FLOOR(@rand:=RAND()*10), value2 * FLOOR(@rand*10) 
+0

SELECT @r:= FLOOR(RAND()* 10),@ r; SELECT id,value1 * @r,value2 * @r;很棒!谢谢 – meticulou

相关问题