我有一个t1表,表中有id、c1、c2和c3列。我使用下面的查询来查找重复的记录
Select group_concat(id) from T1 group by C2 having count(id) >1;
现在我想按c3列对所有重复记录进行分组。我该怎么做?注:我不期待
从t1组中通过c2、c3选择计数(id)>1的组\u concat(id);
我想得到所有在c2上有重复值的记录,并仅基于c3对它们进行分组,而不考虑它们的c2值
id C1 C2 C3
1 a 3 A
2 b 2 A
3 c 2 A
4 d 2 B
5 e 3 C
在上述数据中,1,5是c2值为3的重复记录,2,3,4是c2值为2的重复记录。我想要一个输出
A - has 2 duplicates (with C2 values 2 and 3 )
B - has 1 duplicate (with C2 value 2)
C - has 1 duplicate (with C2 value 3)
2条答案
按热度按时间carvr3hs1#
在派生表中,我们可以
GROUP BY
在C2
并确定他们的数量。C2
count大于1的值基本上是重复的(出现在多行中)。将此结果集联接到上的主表
C2
. 这将有助于我们得到一个额外的列显示C2
数一数每一行。现在,我们可以在
C3
使用COUNT(DISTINCT ...)
,考虑计数大于1的情况。尝试:
结果
db fiddle视图
omvjsjqw2#