2010-11-18 6 views
7

He buscado en la red y aquí pero no puedo encontrar una respuesta a la siguiente pregunta de MySQL. Estoy buscando reemplazar el valor de un campo existente con una consulta que tiene un número aleatorio entre 30 y 300. La razón se debe a que he movido galerías y tenía 250,000,000 de visitas en mis imágenes y se perdieron con la migración y muchos de mis miembros están molestos de que han perdido puntos de vista ....Agregue un número aleatorio entre 30 y 300 a un campo existente

Respuesta

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

Necesita 'floor()' o obtendrá un punto flotante. –

+0

¿No se ha insertado un flotante en int cuando se inserta en una columna INTEGER? – AndreKR

+0

Pero había otro problema en nuestras dos soluciones: la mitad de la probabilidad para 30 y 270 que para los otros números. Lo corregí. – AndreKR

4

uso RAND()

UPDATE table 

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

WHERE foo = 'bar' 
4

Creo que esto va a hacer el truco:

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