Per effettuare un intero casuale compreso tra 60 e 120, è necessario fare un po 'di aritmetica con i risultati di RAND()
, che produce valori in virgola solo galleggianti:
SELECT FLOOR(60 + RAND() * 61);
Allora, cosa sta succedendo qui:
RAND()
produrrà un valore come 0.847269199
. Moltiplichiamo quello per 61, che ci dà il valore 51.83615194. Aggiungiamo 60, dato che è l'offset desiderato sopra lo zero (111.83615194). FLOOR()
arrotonda il tutto al numero intero più vicino. Infine, si dispone di 111.
Per fare questo più di qualche migliaio di righe esistenti:
UPDATE table SET randcolumn = FLOOR(60 + RAND() * 61) WHERE (<some condition if necessary>);
Vedere the MySQL docs on RAND()
per ulteriori esempi.
Nota penso di avere il diritto di aritmetica, ma se si ottiene valori di 59 o 121 al di fuori del range atteso, cambiare il +60
su o in giù di conseguenza.
fonte
2011-08-20 03:17:54
Questo produrrà solo numeri in [0; 120) - è necessario moltiplicare per 61. – emboss
@emboss Ha prodotto [60: 119], non [0: 120], ma hai ragione riguardo al 61 moltiplicatore –
Oops, sì :) Correggerò che ... sembra che non possa più. – emboss