[英]Assistance with MySQL query for duplicates
Table1
Colum1
ID Name Size
1 File23 912831823
2 File29 823472348
3 File21 912831823
4 File24 742834882
基本结构在上面,现在我正在寻找Size上的重复项,因为有时输入了错误的Name。
SELECT Name, Size, COUNT(Size) AS Counted FROM Column1 GROUP BY Size HAVING (COUNT(Size)>1) ORDER BY Counted DESC
这给了我以下
Name Size Counted
File23 912831823 2
这是进步,因为它计算了Size重复的次数,即2。但是,我的目标是获取这样的输出,其中列出了每个重复项,但是我不太确定如何格式化该查询。
Name Size Counted
File23 912831823 2
File21 912831823 2
我尝试了一些不同的方法,甚至尝试了外部联接,但是很明显,我对此并不了解,谁能向正确的方向推我? =)
您将必须进行聚合计数,然后重新加入源表:
SELECT t1.Name, Counts.Size, Counts.Counted
FROM
(
SELECT Size, COUNT(ID) as Counted
FROM t1
GROUP BY Size
) Counts
LEFT JOIN t1 ON t1.Size = Counts.Size
您可以通过使用联接到聚合查询来做到这一点:
select t1.*, agg.cnt
from table1 t1 join
(SELECT Size, count(*) as cnt
FROM table1
GROUP BY Size
HAVING COUNT(Size) > 1
) agg
on t1.size = agg.size
order by agg.cnt desc, size desc;
子查询获取重复的大小。 join
将带回原始行。 在大多数其他数据库中,您可以使用窗口/分析功能来代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.