48

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

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

4

3 に答える 3

137

これを試して:

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

のMySQLドキュメントからRAND

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

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

于 2013-02-14T01:01:36.670 に答える
13

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

UPDATE tableName
SET ColumnName= FLOOR(1 + rand() * 3);

注意: RAND()は、0 から 1 までのランダムな float 値を生成します。

于 2017-03-06T08:34:19.110 に答える