MYSQL从列表中随机插入

MYSQL从列表中随机插入,mysql,random,Mysql,Random,我想向表中添加一个随机值。虽然我知道如何在一个范围内添加随机整数,但我目前还不知道如何从列表中添加随机选择的项 假设我有一个用于IM帐户的MYSQL表。我想用随机数据填充它 INSERT INTO `im` (`im`, `service`) SELECT LOWER(`last`), RANDOM-SELECTION-HERE FROM `contact`; 这个查询应该做的是从我给出的数组中随机选择联系人的姓氏添加到IM表中。例如,数组将是: ['AIM', 'ICQ', 'MSN', '

我想向表中添加一个随机值。虽然我知道如何在一个范围内添加随机整数,但我目前还不知道如何从列表中添加随机选择的项

假设我有一个用于IM帐户的MYSQL表。我想用随机数据填充它

INSERT INTO `im` (`im`, `service`)
SELECT LOWER(`last`), RANDOM-SELECTION-HERE
FROM `contact`;
这个查询应该做的是从我给出的数组中随机选择联系人的姓氏添加到IM表中。例如,数组将是:

['AIM', 'ICQ', 'MSN', 'Yahoo', 'GTalk', 'Other']
因此,我想添加用户的姓氏加上数组中的一个随机项


注意:我知道用PHP、Perl等编程语言完全可以做到这一点,但我并不打算这么做。请尝试提供一种严格使用MYSQL的方法。

如果您愿意将服务添加到另一个表中

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

工作得漂亮,容易理解。谢谢:)请注意,
0.5+RAND()*6
将返回0到6之间的值,其中0从ELT()返回空值
1+RAND()*6
将返回介于1和6之间(包括1和6)的值,这意味着ELT()始终从列表中返回结果。@AndyBurton:不正确。
ELT()
的第一个参数,如果是浮点,则四舍五入以生成索引;0.5加上任何数字>=0都不能四舍五入为0。@AndyBurton:另外,
1+RAND()*6
产生的值从1到7(含1到7),从而超过了列表大小,并产生
NULL
s.@chaos我很抱歉,我在返回MySQL文档时将其包装在地板上,该文档产生了0到6(含0到6),我将其更改为
FLOOR(1+RAND()*6) 
获得1-6个(含1-6个)。mysql行是
以获得一个范围为i的随机整数R,这非常棒,正是我想要的
INSERT INTO `im` ( `im` , `service` )
SELECT LOWER( `last` ) , (
   SELECT `service`
   FROM `service`
   ORDER BY RAND( )
   LIMIT 1
)
FROM `contact`