如何根据MySQL中的多个字段查找重复行?

时间:2012-10-02 13:34:27

标签: mysql sql

  

可能重复:
  Mysql Duplicate Rows ( Duplicate detected using 2 columns )

在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不受关注,只有其他两个字段。< / p>

我希望能够检索第32,33和36行,因为它们具有相同的标题和相同的时间。

我不想要输入标题或时间,我希望查询返回所有在这两个字段上找到“重复”匹配的字段,无论是只有两个还是50个。这样我就可以浏览并编辑或删除一些副本。

2 个答案:

答案 0 :(得分:64)

这是你想要的

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

答案 1 :(得分:32)

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
               )