2012-05-11 13 views
7

5000 kullanıcı için standart profil resimleri hazırlıyorum ve şu anda 'kullanıcı' tablosuna bir referans başvurusu eklemem gerekiyor. Tüm kullanıcıların aynı standart profil resmine sahip olmasını istemiyorum, bu yüzden 'user_profile_image' satırını aşağıdaki sorguda dinlenen dizelerden biriyle güncellemeye çalışıyorum.Tablo güncelleniyor, 3 rastgele dizi arasında seçim yapma - nasıl?

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

Sorgu işe yaramıyor gibi görünüyor.

Bu yol çok mu basit?

Herhangi bir yardım çok takdir edilmektedir!

Saygılarımızla Mathias

+1

bu (http://stackoverflow.com/questions/ iyi [rastgele insert] görünüyor bakınız 1301935/mysql-insert-listeden rasgele) –

cevap

25

RAND(), 0 ile 1 arasında bir sayı döndürür; Eğer sahip olduğunuz resimlerin sayısıyla çarpın ve FLOOR() alırsak, sen ELT ile sonuca geçiş yapabilirsiniz:

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

Sadece beni örnekle dövün :) – Cylindric

+0

@Cylindric: Endişelenme yok - benim +1'im yine de var :) – eggyal

+0

Bu harika, çok teşekkürler! –

4

Sen kılavuzunu okumak gerekir. RAND() yaptıklarını düşündüğünüz şeyi yapmaz.

yerine bu deneyin:

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

Neden düşüş var? – Cylindric

İlgili konular