2012-05-11 20 views
7

Tôi đang tạo ảnh tiểu sử chuẩn cho 5000 người dùng và ngay bây giờ tôi cần chèn tham chiếu vào bảng 'người dùng'. Tôi không muốn tất cả người dùng có cùng một hình ảnh hồ sơ chuẩn, vì vậy tôi đang cố gắng cập nhật hàng 'user_profile_image' bằng một trong các chuỗi nghe trong truy vấn bên dưới.Cập nhật bảng, chọn giữa 3 chuỗi ngẫu nhiên - làm cách nào?

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

Truy vấn dường như không hoạt động.

Đây có phải là cách đơn giản không?

Bất kỳ trợ giúp nào được đánh giá cao!

Trân trọng! Mathias

+1

thấy điều này có vẻ tốt [chèn ngẫu nhiên] (http://stackoverflow.com/questions/ 1301935/mysql-insert-random-from-list) –

Trả lời

25

RAND() trả về số từ 0 đến 1; nếu bạn nhân nó với số lượng hình ảnh mà bạn có và lấy FLOOR(), bạn có thể bật kết quả với ELT:

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

Chỉ cần đánh tôi vào ví dụ :) – Cylindric

+0

@Cylindric: Đừng lo - bạn có +1 của tôi anyway :) – eggyal

+0

Điều này thật tuyệt vời, cảm ơn rất nhiều! –

4

Bạn cần phải đọc hướng dẫn. RAND() không làm những gì bạn nghĩ.

Hãy thử điều này thay vì:

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

Tại sao downvote? – Cylindric

Các vấn đề liên quan