2015-05-01 42 views
1

我正在嘗試查找將在特定字段中查找不同值的MySQL查詢,計算該值的出現次數,然後對結果進行排序。計算不同值的多列出現次數

我知道如何與一個行(只是名稱1)做到這一點:

SELECT name1, COUNT(*) AS count 
FROM table 
GROUP BY name1 
ORDER BY `count` ASC 

這是可能的2個或更多的行或我需要給previouse隊列中去了多次?

例如:

id   name1  name2 
    -----  ------  ------ 
    1   Mark   Paul 
    2   Mike   John 
    3   Paul   Mike 
    4   Cleo   Bert 
    5   Mike   Cleo 
    6   John   Mark 
    7   Mark   Cleo 

結果:

names  count1  count2 
    ------  -------  ------ 
    Bert  0   1 
    Cleo  1   2 
    john  1   1 
    Mark  2   1 
    Mike  2   1 
    Paul  1   1 

回答

3
SELECT name1, COALESCE(sum(count1),0) as count1, COALESCE(sum(count2),0) as count2 
FROM 
(
    select name1, count(*) as count1, null as count2 from your_table group by name1 
    union all 
    select name2, null, count(*) from your_table group by name2 
) tmp 
GROUP BY name1 
ORDER BY name1 ASC 
+1

我想你的解決方案,但這樣的count1和COUNT2合併成1列。我想保留那些分開的。 – PHPhil

+0

更新的答案 –

+0

謝謝,作品像一個魅力。 – PHPhil