如何在MySQL中基于多个字段查找重复行?

32

可能是重复问题:
Mysql 重复行(使用两个列检测到重复)

在一个 MySQL 数据库中,我有很多行数据。例如:

id | title   | time  | domain
32   title1    12:30   domain1.com
33   title1    12:30   domain2.com
34   title2    14:20   domain1.com
35   title3    14:30   domain2.com
36   title1    12:30   domain55.com

如何基于 标题时间 从数据库中选择行?不关心重复的域名或ID,只关注这两个字段。

我想检索行32、33和36,因为它们具有相同的标题和相同的时间。

我不想输入标题或时间,希望查询返回所有在这两个字段上存在“重复”匹配的记录,无论是只有两条还是50条。这样我就可以逐个查看并编辑或删除一些重复项了。

2个回答

66

这就是你想要的

SELECT title, time  
  FROM table
GROUP BY title, time
  HAVING count(*) > 1

FROM子句 WHERE子句 GROUP BY子句 HAVING子句 SELECT子句 ORDER BY子句 - Vladimir Ch

38
select distinct id, title, time
  from table t1
 where exists (select * 
                 from table t2 
                where t2.id <> t1.id
                  and t2.title = t1.title
                  and t2.time = t1.time
               )

5
这实际上回答了这个问题,返回了所有三行重复的记录,而另一个答案只返回了一行。 - mwotton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接