2013-02-14 31 views
27

Mam duży stół i chcę dodać kolumnę, która ma losowo wybraną liczbę dla każdego rekordu. 1, 2 lub 3.Aktualizacja MySQL z liczbami losowymi między 1-3

Trudno. Jakieś pomysły?

+5

[Co próbowałeś? ] (http://www.whathaveyoutried.com/) Patrz [pytaj porady] (http://stackoverflow.com/questions/ask-advice), proszę. –

+0

http://stackoverflow.com/questions/6550155/mysql-get-a-random-value-merween-two-values ​​ – sgeddes

+0

Nie próbowałeś 'UPDATE' i' RAND() '? – tadman

Odpowiedz

98

Spróbuj tego:

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

Z MySQL documentation dla RAND:

Zwraca losową wartość zmiennoprzecinkową V w zakresie 0 = v < < 1.0.

więc w powyższym zapytaniu, największa wartość, które mogą być generowane przez 1 + RAND()*3 byłoby 3.999999, który po podłogi dałoby 3. Najmniejsza wartość będzie występować, gdy RAND() zwraca 0, w którym to przypadku dałoby 1.

-3

Wykonaj

UPDATE tableName SET columnName = FLOOR(RAND() + RAND()); 
0

Używaj RAND() funkcję. Zwraca losową wartość zmiennoprzecinkową v z zakresu 0 <= v < 1.0. Aby uzyskać losową liczbę całkowitą R z zakresu i <= R < j, należy użyć wyrażenia FLOOR(i + RAND() * (j − i)). Na przykład, aby uzyskać losową liczbę całkowitą w zakresie zakres 1<= R < 3, użyj następującej klauzuli:

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

UWAGA:RAND() produkuje losowych wartości unosić się od 0 do 1.

Powiązane problemy