我需要运行一个SQL查询,从列表中选择一个随机数并用它更新一个特定的列.
数字列表:
(101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122)
兰德表:(结构)
id rand type
1 0 false
2 0 true
3 0 false
4 0 true
5 0 true
Run Code Online (Sandbox Code Playgroud)
我需要从列表中选择随机数并更新"rand"列,
试试这个:
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)
它将rand在每次执行时使用列表中的随机值更新列
如果数字列表来自预定义表,您可以这样做:
UPDATE `rand` SET `rand` = (SELECT `number` FROM `number_table` ORDER BY RAND() LIMIT 1)
如果数字不是来自另一个表,但你只需要101到122之间的任意随机数,那么我认为这应该有效:
UPDATE `rand` SET `rand` = FLOOR(RAND() * (22)) + 101
-- or written with the formula below.
UPDATE `rand` SET `rand` = FLOOR(101 + RAND() * (123-101))
Run Code Online (Sandbox Code Playgroud)
从MySQL文档:
为了获得范围i <= R <j的随机整数R,使用表达式FLOOR(i + RAND()*(j-i)).