2012-05-11 16 views
7

Tworzę standardowe zdjęcia profilowe dla 5000 użytkowników, a teraz muszę wstawić referencje w tabeli "Użytkownicy". Nie chcę, aby wszyscy użytkownicy mieli ten sam standardowy obraz profilu, więc próbuję zaktualizować wiersz "user_profile_image" jednym z łańcuchów nasłuchujących w poniższym zapytaniu.Aktualizacja tabeli, wybieranie między 3 losowymi ciągami znaków - jak?

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

Zapytanie nie działa.

Czy to zbyt proste?

Każda pomoc jest doceniana!

poważaniem, Mathias

+1

zobaczyć ten wydaje dobre [losowe Insert] (http://stackoverflow.com/questions/ 1301935/mysql-insert-random-from-list) –

Odpowiedz

25

zwraca liczbę z zakresu od 0 do 1; jeśli pomnożyć to przez liczbę zdjęć, które masz i wziąć FLOOR(), można przełączyć na wynik z ELT:

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

Po prostu pobij mnie do przykładu :) – Cylindric

+0

@Cylindryk: Nie martw się - masz moje +1 tak czy inaczej :) – eggyal

+0

To jest niesamowite, wielkie dzięki! –

4

Musisz przeczytać instrukcję. RAND() nie robi tego, co wydaje się, że robi.

Spróbuj to zamiast:

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

Dlaczego spadamy? – Cylindric

Powiązane problemy