web-dev-qa-db-ja.com

1〜3の乱数を使用したMySQL UPDATE

大きなテーブルがあり、各レコードにランダムに選択された番号を持つ列を追加します。 1、2、または3。

苦労しています。何か案は?

38
karnival8

これを試して:

UPDATE tableName SET columnName = FLOOR( 1 + Rand( ) *3 );

MySQLから ドキュメント for Rand

0 <= v <1.0の範囲のランダムな浮動小数点値vを返します。

したがって、上記のクエリでは、1 + Rand()*3で生成できる最大値は3.999999になり、flooredで3になります。最小値はRand()が0を返すときに発生し、その場合、これは1になります。

117
Rabbie

Rand() 関数を使用します。 _0 <= v < 1.0_の範囲のランダムな浮動小数点値vを返します。範囲_i <= R < j_のランダムな整数Rを取得するには、式FLOOR(i + Rand() * (j − i + 1))を使用します。たとえば、範囲_1<= R < 3_の範囲でランダムな整数を取得するには、次のステートメントを使用します。

_UPDATE tableName
SET ColumnName= FLOOR(1 + Rand() * 3);
_

N.B:Rand() は、0から1までのランダムな浮動小数点値を生成します。

7
Faisal