2014-11-11 5 views
2

Мне нужно запустить SQL-запрос, который выбирает случайное число из списка и обновляет с ним определенный столбец.MySQL: обновить все строки со случайными числами из списка

Список номеров:

(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 

Мне нужно, чтобы выбрать случайное число из списка и обновления столбца "рант",

+1

ли список номеров из другой таблицы? – jpw

ответ

5

Попробуйте следующее:

 
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) 
6

Если число Безразлично «т прийти из другой таблицы, но вы просто хотите любое случайное число между 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)) 

из documentat MySQL иона:

Чтобы получить случайное число R в диапазоне я < = R < J, использовать выражение этаж (я + RAND() * (J - я)).

Sample SQL Fiddle

Смежные вопросы