2012-09-10 25 views
1

如何將行隨機與MySQL轉換爲列? 鮮明(IMAGE_URL)如何將行隨機與MySQL轉換爲列

select p.email , 
     image_url AS image_url_1, 
     image_url AS image_url_2 , 
     image_url AS image_url_3, 
     image_url AS image_url_4 
    FROM 
     poll p 
    GROUP BY 
     email 
    ORDER by RAND() 

而且,在此查詢

select email, 
    (select IFNULL((image_url from poll p1 order by rand() limit 1), NULL) as image_1, 
    (select IFNULL((image_url from poll p2 order by rand() limit 1), NULL) as image_2, 
    (select IFNULL((image_url from poll p3 order by rand() limit 1), NULL) as image_3, 
    (select IFNULL((image_url from poll p4 order by rand() limit 1), NULL) as image_4 
from poll 
group by email 

如何顯示null如果小於4 IMAGE_URL和如何使它不同?

+0

是否要顯示錶中的一個電子郵件地址和四個隨機選擇的圖像? –

+0

是的。任何想法?怎麼做? – user1615767

回答

0
select email, 
(select image_url from poll p1 order by rand() limit 1) as image_1, 
(select image_url from poll p2 order by rand() limit 1) as image_2, 
(select image_url from poll p3 order by rand() limit 1) as image_3, 
(select image_url from poll p4 order by rand() limit 1) as image_4 
from poll 
+1

昂貴;最終可能會有相同的圖像多次;並且不應該在'p.email'上的每個子查詢過濾器? – eggyal

+0

也許它很昂貴,但我不認爲這樣的查詢是擺在超過幾千行的表上。是的,電子郵件過濾器應該/可以添加。但只要我們不知道什麼是OP針對... –

+0

選擇電子郵件, (選擇IFNULL((從民調P1 ORDER BY蘭特IMAGE_URL()限制1),NULL)作爲IMAGE_1, (選擇IMAGE_URL從輪詢p2 order by rand()limit 1)as image_2, (從輪詢p3中選擇image_url by rand()limit 1)as image_3, (從輪詢p4中選擇image_url by rand()limit 1)as image_4 來自投票 通過電子郵件分組 我如何顯示NULL,如果有少於4 image_url? – user1615767