32

可能重复:
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 无关紧要,只关心其他两个字段。

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

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

4

2 回答 2

65

这就是你想要的

SELECT title, time  
  FROM table
GROUP BY title, time
  HAVING count(*) > 1
于 2012-10-02T13:53:07.523 回答
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
               )
于 2012-10-02T13:39:14.400 回答