2014-11-22 65 views
1

我正在嘗試獲取重複計數但未實際刪除重複項。 我嘗試使用GROUP BY id,然後COUNT(id),但它刪除所有重複的條目。 有沒有辦法不刪除重複?獲取重複計數而不刪除

表看起來是這樣的:

ID1 ID2 Value 
1  2  someval 
1  3  someval 
1  4  someval 
2  3  someval 
2  1  someval 
3  1  someval 
4  1  someval 

我試圖讓這個:

ID1 ID2 Value COUNT 
1  2  someval 3 
1  3  someval 3 
1  4  someval 3 
2  3  someval 2 
2  1  someval 2 
3  1  someval 1 
4  1  someval 1 

我用這個:

SELECT ID1, ID2, Value, COUNT(ID1) FROM table GROUP BY ID1; 
+0

你的主要關鍵是什麼? – Strawberry 2014-11-22 14:04:17

+0

我實際上是從嵌套的select查詢查詢這個表。所以我想沒有主鍵? – user4281889 2014-11-22 14:05:53

回答

4

一種方式這樣做是對的計數一個單獨的查詢,並加入就可以了:

SELECT t.id1, t.id2, t.value, cnt 
FROM my_table t 
JOIN (SELECT id1, count(*) AS cnt 
     FROM  my_table 
     GROUP BY id1) c ON t.id1 = c.id1 
+0

啊,打我吧+1 – Strawberry 2014-11-22 14:13:08

+0

謝謝,工作正常:) – user4281889 2014-11-22 14:44:29

1

您可以使用相關子查詢做到這一點在MySQL中;

select id1, id2, value, 
     (select count(*) from table t2 where t2.id1 = t.id1) as count 
from table t; 
0

嘗試這樣的事:

SELECT YourColumn, COUNT(*) TotalCount 
FROM YourTable 
GROUP BY YourColumn 
HAVING COUNT(*) > 1 
ORDER BY COUNT(*) DESC 
+0

它比標記這個回答:) .. thnks :) – 2014-11-22 14:12:01

+0

哦,對不起,我錯了。它實際上修剪了一些價值......我正在嘗試其他解決方案,但是非常感謝你...... – user4281889 2014-11-22 14:13:46

1

如果性能是一個問題那麼不相關的子查詢可能會比相關的子查詢快幾個數量級...

SELECT x.* 
    , cnt 
    FROM my_table x 
    JOIN 
    (SELECT id1,COUNT(*) cnt FROM my_table GROUP BY id1) y 
    ON y.id1 = x.id1;