Para hacer un entero aleatorio entre 60 y 120, es necesario hacer un poco de aritmética con los resultados de RAND()
, que produce valores de puntos solamente flotantes:
SELECT FLOOR(60 + RAND() * 61);
Entonces, ¿qué está pasando aquí:
RAND()
producirá un valor como 0.847269199
. Multiplicamos eso por 61, lo que nos da el valor 51.83615194. Agregamos 60, ya que esa es su compensación deseada por encima de cero (111.83615194). FLOOR()
redondea todo al número entero más cercano. Por último, usted tiene 111.
Para hacer esto más de unos pocos miles de filas existentes:
UPDATE table SET randcolumn = FLOOR(60 + RAND() * 61) WHERE (<some condition if necessary>);
Ver the MySQL docs on RAND()
para más ejemplos.
Nota creo que tengo el derecho de la aritmética, pero si te dan valores de 59 o 121 fuera del rango esperado, cambiar el +60
arriba o hacia abajo en consecuencia.
Eso solo producirá números en [0; 120] - necesita multiplicar por 61. – emboss
@emboss Produjo [60: 119], no [0: 120], pero tiene razón sobre el 61 multiplicador –
Vaya, sí :) Voy a corregir eso ... parece que ya no puedo. – emboss