2010-11-18 12 views
7

J'ai regardé sur le net aussi bien qu'ici mais je ne peux pas trouver une réponse à la question MySQL suivante. Je cherche à remplacer la valeur d'un champ existant par une requête dont le nombre aléatoire est compris entre 30 et 300. La raison était que j'ai déplacé des galeries et comptait 250 000 000 vues sur mes images et qu'elles avaient été perdues avec la migration et beaucoup de mes membres sont en colère parce qu'ils ont perdu des vues ....Ajouter un nombre aléatoire entre 30 et 300 à un champ existant

Répondre

7
UPDATE the_table SET the_field = the_field + FLOOR(RAND() * (270 + 1)) + 30 
+0

Vous avez besoin de 'floor()' ou vous obtiendrez un point flottant. –

+0

Un float n'est-il pas casté en int lorsqu'il est inséré dans une colonne INTEGER? – AndreKR

+0

Mais il y avait un autre problème dans nos deux solutions: la moitié de la probabilité pour 30 et 270 que pour les autres nombres. Je l'ai corrigé. – AndreKR

4

Utilisez RAND()

UPDATE table 

SET field = FLOOR(30 + (RAND() * 270)); 

WHERE foo = 'bar' 
4

Je pense que cela fera l'affaire:

UPDATE table SET field = ROUND(30 + (RAND() * 270)) WHERE id =1;