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

Cod*_*912 29 mysql sql

可能重复:
Mysql重复行(使用2列检测到重复)

在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
Run Code Online (Sandbox Code Playgroud)

我怎么能够基于从数据库中选择行只有标题和时间?重复的域或ID不是问题,只有其他两个字段.

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

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

小智 65

这就是你想要的

SELECT title, time  
  FROM table
GROUP BY title, time
  HAVING count(*) > 1
Run Code Online (Sandbox Code Playgroud)


Wol*_*ang 34

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
               )
Run Code Online (Sandbox Code Playgroud)

  • 这实际上回答了问题,返回所有三个重复行,而[其他答案](http://stackoverflow.com/a/12691631/283991)只返回一行. (5认同)