2012-08-04 36 views
0

我有一個包含3列x,y,z的表格。這些行包含數據。有時數據的價值是重複的。MySQL - 3列數據。需要所有3列公用的數據和數據本身

需要知道重複哪些數據和計數。 這個簡化的例子只有幾個數據值。

實際上,表中有其他幾列和一個主鍵,並且在x,y,z中通常沒有 數據。該查詢將通過php調用。

表:

x y z 
a 
    b 
    c 
    a d 
    a 
a b a 

期望中的MySQL查詢結果:

Data Count 
a 5 
b 2 
c 1 
d 1 

如果有人可以幫助將非常感激。已經與此戰鬥了幾個小時,並且無法快速完成任務。

乾杯,

彼得

+0

我認爲你可以做到這一點的唯一方法是通過遍歷表結果並計算關聯數組中的值,並將值作爲關鍵字。 – ATaylor 2012-08-04 11:39:47

回答

5

您可以使用此解決方案:

SELECT a.data, 
     COUNT(*) AS Count 
FROM  (
     SELECT x AS data FROM tbl WHERE x IS NOT NULL UNION ALL 
     SELECT y   FROM tbl WHERE y IS NOT NULL UNION ALL 
     SELECT z   FROM tbl WHERE z IS NOT NULL 
     ) a 
GROUP BY a.data 

這會從所有三列中的值合爲一體,使之成爲一個簡單的GROUP BYCOUNT

+0

該查詢工作出色。非常感謝。 – user1575981 2012-08-04 11:53:24