2012-08-31 64 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

相關問題