更新表,在3个随机字符串之间进行选择 - 如何?

时间:2012-05-11 10:17:23

标签: mysql

我正在为5000名用户制作标准的个人资料图片,现在我需要在“用户”表格中插入一个参赛资料。我不希望所有用户都拥有相同的标准配置文件图片,因此我尝试使用下面的查询中的一个字符串来更新'user_profile_image'行。

UPDATE users 
SET user_profile_image = rand('adrian.jpg', 'bendix.jpg', 
hr_skaeg.jpg', `'jeppe.jpg')

查询似乎不起作用。

这样太简单了吗?

非常感谢任何帮助!

亲切的问候, 的Mathias

2 个答案:

答案 0 :(得分:28)

RAND()返回0到1之间的数字;如果您将它乘以您拥有的图片数量并取FLOOR(),则可以使用ELT打开结果:

UPDATE users SET user_profile_image =
 ELT(1 + FLOOR(RAND()*4), 'adrian.jpg', 'bendix.jpg', 'hr_skaeg.jpg', 'jeppe.jpg');

答案 1 :(得分:6)

您需要阅读手册。 RAND()并没有像你认为的那样做。

请改为尝试:

UPDATE users
SET user_profile_image = 
    CASE FLOOR(RAND() * 4) 
    WHEN 0 THEN 'adrian.jpg.img' 
    WHEN 1 THEN 'bendix.jpg' 
    WHEN 2 THEN 'hr_skaeg.jpg' 
    WHEN 3 THEN 'jeppe.jpg' 
    END