I need to run an SQL query that picks a random number from list and updates a specific column with it.
List of numbers:
(101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122)
rand table: (structure)
id rand type
1 0 false
2 0 true
3 0 false
4 0 true
5 0 true
I need to pick random number from list and update "rand" column,
Try this:
UPDATE `rand` SET `rand` = (SELECT val FROM ( SELECT 101 AS val UNION ALL SELECT 102 UNION ALL SELECT 103 UNION ALL SELECT 104 UNION ALL SELECT 105 UNION ALL SELECT 106 UNION ALL SELECT 107 UNION ALL SELECT 108 UNION ALL SELECT 109 UNION ALL SELECT 110 UNION ALL SELECT 111 UNION ALL SELECT 112 UNION ALL SELECT 113 UNION ALL SELECT 114 UNION ALL SELECT 115 UNION ALL SELECT 116 UNION ALL SELECT 118 UNION ALL SELECT 119 UNION ALL SELECT 120 UNION ALL SELECT 121 UNION ALL SELECT 122 ) AS vals ORDER BY RAND() LIMIT 1)
It will update the rand
column with a random value from the list at each execution
If the list of numbers is from a predefined table you can do this:
UPDATE `rand` SET `rand` = (SELECT `number` FROM `number_table` ORDER BY RAND() LIMIT 1)
If the numbers doesn't come from another table, but you just want any random number between 101 and 122 then I think this should work:
UPDATE `rand` SET `rand` = FLOOR(RAND() * (22)) + 101
-- or written with the formula below.
UPDATE `rand` SET `rand` = FLOOR(101 + RAND() * (123-101))
From the MySQL documentation:
To obtain a random integer R in the range i <= R < j, use the expression FLOOR(i + RAND() * (j – i)).
Sample SQL Fiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With