2016-03-08 32 views
1

假設我有以下表命名test 2列AB
A B
------
1 2
2 3
1 2
3 4
我想用一個基於列將只返回重複行數(在這種情況下爲1和3)的查詢和B合計,所以返回的計數應該是2
SELECT 'Duplicates' As Warning, count(*) AS RowCount FROM test where(查詢到這裏),謝謝。計數重複的行只基於2列

+0

如果有多個重複的行,如(1,2),(1,2),(2,3),(2,3)?你期望的結果是什麼? –

+0

你試過我的回答嗎? – sagi

回答

1
SELECT A, B, COUNT(*) as Count FROM Test GROUP BY A, B HAVING COUNT(*) > 1 
+0

我得到以下錯誤代碼:1241.操作數應該包含1列 – MrShabana

+0

也許別名爲rowCount2,而不是Count ......剩下的應該工作。您指出的錯誤似乎意味着您需要執行count(colName)> 1,但這不太可能... – AlexT82

0

您可以使用此子查詢:

select 'Duplicates' as warning, count(*) as rowcount 
from (select a, b, count(*) as cnt 
     from test t 
     group by a, b 
     having cnt > 1 
    ) t; 
+0

您需要在子查詢中添加HAVING子句(請參閱上面的答案),以便正確地進行篩選或添加之後的where子句(其中t.count> 1))。 – AlexT82

1

如果我理解正確的你,如果在你的例子(2,3)曾另一行則數應4.如果那這樣,使用此:

SELECT 'Duplicates' as warning,sum(cnt) FROM (
    SELECT a,b,COUNT(*) as cnt 
    FROM YourTable 
    GROUP BY a,b 
    HAVING count(*) > 1 
) 
1

得到儘可能對使用,

SELECT CONCAT(A,'-',B) AS Duplicate Pair,COUNT(A) AS COUNT FROM `test` GROUP BY A,B HAVING COUNT(A) > 1; 

OR 爲了獲得作爲個人使用,

SELECT A AS Duplicate1,B AS Duplicate2,COUNT(A) AS COUNT FROM `test` GROUP BY A,B HAVING COUNT(A) > 1;