web-dev-qa-db-fra.com

MISE À JOUR MySQL avec un nombre aléatoire entre 1-3

Vous avez un grand tableau et je veux ajouter une colonne qui a un numéro choisi au hasard pour chaque enregistrement. 1, 2 ou 3.

Avoir du mal. Des idées?

38
karnival8

Essaye ça:

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

Depuis MySQL documentation pour Rand:

Renvoie une valeur aléatoire à virgule flottante v dans la plage 0 <= v <1,0.

Ainsi, dans la requête ci-dessus, la plus grande valeur qui pourrait être générée par 1 + Rand()*3 serait 3.999999, Qui, au sol, donnerait 3. La plus petite valeur se produirait lorsque Rand() renvoie 0, auquel cas cela donnerait 1.

117
Rabbie

Utilisez la fonction Rand () . Il renvoie une valeur aléatoire à virgule flottante v dans la plage 0 <= v < 1.0. Pour obtenir un entier aléatoire R dans la plage i <= R < j, Utilisez l'expression FLOOR(i + Rand() * (j − i + 1)). Par exemple, pour obtenir un entier aléatoire dans la plage de la plage 1<= R < 3, Utilisez l'instruction suivante:

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

N.B: Rand () produit des valeurs flottantes aléatoires de 0 à 1.

7
Faisal