MYSQL вставить случайный из списка - PullRequest
27 голосов
/ 19 августа 2009

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

Допустим, у меня есть таблица 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.

Ответы [ 2 ]

61 голосов
/ 19 августа 2009
INSERT INTO `im`
(`im`, `service`)
SELECT LOWER(`last`),
    ELT(0.5 + RAND() * 6, 'AIM', 'ICQ', 'MSN', 'Yahoo', 'GTalk', 'Other')
FROM `contact`
8 голосов
/ 20 августа 2009

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

INSERT INTO `im` ( `im` , `service` )
SELECT LOWER( `last` ) , (
   SELECT `service`
   FROM `service`
   ORDER BY RAND( )
   LIMIT 1
)
FROM `contact`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...