我有一个包含id、C1、C2和C3列的表C2。我使用以下查询查找重复记录
Select group_concat(id) from T1 group by C2 having count(id) >1;现在,我想将所有重复的记录按列C3分组。我该怎么做呢?注:我不期望
group_concat(id)按C2从T1组中选择,C3计数(Id) >1;
我希望在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)发布于 2018-11-12 08:43:43
GROUP BY上使用C2并识别它们的计数。计数超过1的C2值基本上是重复的(发生在多个行中)。C2上的主表。这将帮助我们获得一个额外的列,显示对每一行的C2计数。C3上使用COUNT(DISTINCT ...)进行条件聚合。尝试:
SELECT
t.C3,
COUNT(DISTINCT IF(dt.count_C2 > 1, t.C2, NULL)) AS duplicates
FROM
your_table AS t
JOIN
(
SELECT
C2,
COUNT(id) AS count_C2
FROM your_table
GROUP BY C2
) AS dt
ON dt.C2 = t.C2
GROUP BY t.C3结果
| C3 | duplicates |
| --- | ---------- |
| A | 2 |
| B | 1 |
| C | 1 |发布于 2018-11-12 08:29:36
SELECT GROUP_CONCAT(id)
FROM T1
WHERE C2 IN
(
SELECT C2
FROM T1
GROUP BY C2
HAVING COUNT(id)>1
)
GROUP BY C3https://stackoverflow.com/questions/53258136
复制相似问题