Mysql 仅基于2列对重复行进行计数
假设下表名为Mysql 仅基于2列对重复行进行计数,mysql,sql,group-by,duplicates,having,Mysql,Sql,Group By,Duplicates,Having,假设下表名为test,有两列A和B ab ---- 12 23 12 34 我想使用一个查询,根据列a和B的组合,只返回重复行的计数(本例中为1和3),因此返回的计数应该是2 选择“Duplicates”作为警告,将(*)计数为test中的RowCount,其中(查询转到此处),谢谢。您可以为此使用子查询: select 'Duplicates' as warning, count(*) as rowcount from (select a, b, count(*) as cnt f
test
,有两列A
和B
ab
----
12
23
12
34
我想使用一个查询,根据列
a
和B
的组合,只返回重复行的计数(本例中为1和3),因此返回的计数应该是2
选择“Duplicates”作为警告,将(*)计数为test中的RowCount,其中(查询转到此处),谢谢。您可以为此使用子查询:
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;
如果我理解正确,如果示例(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
)
要获得配对使用
SELECT CONCAT(A,'-',B) AS Duplicate Pair,COUNT(A) AS COUNT FROM `test` GROUP BY A,B HAVING COUNT(A) > 1;
或
作为个人使用
SELECT A AS Duplicate1,B AS Duplicate2,COUNT(A) AS COUNT FROM `test` GROUP BY A,B HAVING COUNT(A) > 1;
您需要在子查询中添加HAVING子句(请参见上面的答案),以便正确过滤,或者在(t.count>1)之后添加where子句。如果有多个重复行,如(1,2)、(1,2)、(2,3)、(2,3)?你期望的结果是什么?你试过我的答案吗?我得到以下错误代码:1241。操作数应包含1列,可能别名为rowCount2而不是Count。。。剩下的应该有用。您指出的错误似乎意味着您需要执行count(colName)>1,但这不太可能。。。
SELECT A AS Duplicate1,B AS Duplicate2,COUNT(A) AS COUNT FROM `test` GROUP BY A,B HAVING COUNT(A) > 1;