2009-08-19 4 views
18

Хотелось бы добавить случайное значение в таблицу. Хотя я знаю, как добавлять случайные целые числа в пределах диапазона, я в настоящее время тупик о том, как добавить случайно выбранный элемент из списка.MYSQL insert random из списка

Предположим, у меня есть таблица MYSQL для учетных записей IM. Я хотел бы заполнить его случайными данными.

INSERT INTO `im` (`im`, `service`) 
SELECT LOWER(`last`), RANDOM-SELECTION-HERE 
FROM `contact`; 

Что этот запрос должен сделать, это добавить в таблицу IM фамилии контакта со случайным выбором из массива я дал бы. Например, массив будет:

['AIM', 'ICQ', 'MSN', 'Yahoo', 'GTalk', 'Other'] 

Итак, я хотел бы добавить пользователей фамилию плюс один из случайных элементов из массива.

ПРИМЕЧАНИЕ. Я знаю, что это вполне возможно с использованием языка программирования, такого как PHP, Perl и т. Д., Но я не пытаюсь это сделать. Попробуйте указать, как это сделать с MYSQL.

ответ

42
INSERT INTO `im` 
(`im`, `service`) 
SELECT LOWER(`last`), 
    ELT(0.5 + RAND() * 6, 'AIM', 'ICQ', 'MSN', 'Yahoo', 'GTalk', 'Other') 
FROM `contact` 
+0

Работали красиво и легко понять. Спасибо :) –

+0

Добро пожаловать. :) – chaos

+7

Обратите внимание, что '0.5 + RAND() * 6' вернет значения от 0 до 6 включительно, при этом 0 возвращает значение NULL из ELT(). «1 + RAND() * 6» возвращает значения от 1 до 6 включительно, что означает, что ELT() всегда возвращает результат из списка. –

5

Если вы готовы добавить свои услуги в другой таблице ...

INSERT INTO `im` (`im` , `service`) 
SELECT LOWER(`last`) , (
    SELECT `service` 
    FROM `service` 
    ORDER BY RAND() 
    LIMIT 1 
) 
FROM `contact` 
+0

, что было потрясающе, именно то, что я искал для – Gunnrryy

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