2012-05-11 12 views
7

Estoy haciendo imágenes de perfil estándar para 5000 usuarios, y ahora necesito insertar un referance en la tabla de 'usuarios'. No quiero que todos los usuarios tengan la misma imagen de perfil estándar, así que estoy tratando de actualizar la fila 'user_profile_image' con una de las cadenas de escuchar en la consulta a continuación.Tabla de actualización, elegir entre 3 cadenas aleatorias, ¿cómo?

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

La consulta no parece funcionar.

¿Es esto demasiado simple?

¡Cualquier ayuda es muy apreciada!

Saludos cordiales, Mathias

+1

ver esto parece buena [insertar al azar] (http://stackoverflow.com/questions/ 1301935/mysql-insert-random-from-list) –

Respuesta

25

RAND() devuelve un número entre 0 y 1; si se multiplica por el número de imágenes que tiene y toma el FLOOR(), puede cambiar en el resultado con ELT:

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

Acaba de vencerme al ejemplo :) – Cylindric

+0

@Cylindric: No se preocupe, tiene mi +1 de todos modos :) – eggyal

+0

¡Esto es increíble, muchas gracias! –

4

es necesario leer el manual. RAND() no hace lo que parece pensar que hace.

Tal vez puedas probar:

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 

;

+2

¿Por qué el voto a favor? – Cylindric

Cuestiones relacionadas