2012-08-02 62 views
0
SELECT COUNT(ID) AS RANK1 FROM `db_ranking` WHERE `sid`=2 AND `rank`=1 
UNION 
SELECT COUNT(ID) AS RANK2 FROM `db_ranking` WHERE `sid`=2 AND `rank`=2 
UNION 
SELECT COUNT(ID) AS RANK3 FROM `db_ranking` WHERE `sid`=2 AND `rank`=3 
UNION 
SELECT COUNT(ID) AS RANK4 FROM `db_ranking` WHERE `sid`=2 AND `rank`=4 
UNION 
SELECT COUNT(ID) AS RANK5 FROM `db_ranking` WHERE `sid`=2 AND `rank`=5 

我想現在每個SELECT結果列..Mysql的聯合查詢,加入結果與名

所以我希望能有5列,每列得到了ID的計數..

所以它應該是這樣的

RANK1 RANK2 RANK3 RANK4 RANK5 
    0  3  5  6  7 

我沒有得到它now..and我不知道爲什麼

回答

1

以下工作沒事..

select 
    (SELECT COUNT(ID) AS RANK1 FROM `db_ranking` WHERE `sid`=2 AND `rank`=1) as Rank1, 
    (SELECT COUNT(ID) AS RANK2 FROM `db_ranking` WHERE `sid`=2 AND `rank`=2) as rank2, 
    (SELECT COUNT(ID) AS RANK3 FROM `db_ranking` WHERE `sid`=2 AND `rank`=3) as rank3, 
    (SELECT COUNT(ID) AS RANK4 FROM `db_ranking` WHERE `sid`=2 AND `rank`=4) as rank4, 
    (SELECT COUNT(ID) AS RANK5 FROM `db_ranking` WHERE `sid`=2 AND `rank`=5) as rank5 
    from dual 
+0

lol..nice的解決方案,但是當它應該 – 2012-08-02 10:13:05

+0

你能解釋我沒有解決方案的一部分它讓我沒有結果?請 ! – Esh 2012-08-02 10:14:47

+0

它是當phpmyadmin,執行查詢,並沒有顯示任何內容..沒有消息..沒有結果沒有什麼..查詢保持在原來的位置,並刷新頁面 – 2012-08-02 10:15:52

0

最effecient方法是

SELECT 
    SUM(CASE WHEN `rank`=1 THEN 1 ELSE 0 END) as Rank1, 
    SUM(CASE WHEN `rank`=2 THEN 1 ELSE 0 END) as Rank2, 
    SUM(CASE WHEN `rank`=3 THEN 1 ELSE 0 END) as Rank3, 
    SUM(CASE WHEN `rank`=4 THEN 1 ELSE 0 END) as Rank4, 
    SUM(CASE WHEN `rank`=5 THEN 1 ELSE 0 END) as Rank5 
FROM 
    `db_ranking` 
WHERE 
    `sid`=2