我想在MySQL数据库中取出重复的记录。这可以用:

SELECT address, count(id) as cnt FROM list
GROUP BY address HAVING cnt > 1

结果是:

100 MAIN ST    2

我想要拖动它,以便它显示复制的每一行。喜欢的东西:

JIM    JONES    100 MAIN ST
JOHN   SMITH    100 MAIN ST

有什么想法可以做到吗?我试图避免做第一个,然后在代码中用第二个查询查找重复。


当前回答

SELECT t.*,(select count(*) from city as tt where tt.name=t.name) as count FROM `city` as t where (select count(*) from city as tt where tt.name=t.name) > 1 order by count desc

用你的表格替换城市。 将name替换为字段名

其他回答

就我个人而言,这个问题解决了我的问题:

SELECT `SUB_ID`, COUNT(SRV_KW_ID) as subscriptions FROM `SUB_SUBSCR` group by SUB_ID, SRV_KW_ID HAVING subscriptions > 1;

这个脚本所做的是在表中显示所有存在过一次以上的订阅者ID,以及找到的重复的数量。

这是表的列:

| SUB_SUBSCR_ID | int(11)     | NO   | PRI | NULL    | auto_increment |
| MSI_ALIAS     | varchar(64) | YES  | UNI | NULL    |                |
| SUB_ID        | int(11)     | NO   | MUL | NULL    |                |    
| SRV_KW_ID     | int(11)     | NO   | MUL | NULL    |                |

希望对你也有帮助!

这里的大多数答案不适用于有多个重复结果和/或有多个列要检查重复的情况。当你在这种情况下,你可以使用这个查询来获得所有重复的id:

SELECT address, email, COUNT(*) AS QUANTITY_DUPLICATES, GROUP_CONCAT(id) AS ID_DUPLICATES
    FROM list
    GROUP BY address, email
    HAVING COUNT(*)>1;

如果希望将每个结果作为一行列出,则需要更复杂的查询。这是我发现有效的方法:

CREATE TEMPORARY TABLE IF NOT EXISTS temptable AS (    
    SELECT GROUP_CONCAT(id) AS ID_DUPLICATES
    FROM list
    GROUP BY address, email
    HAVING COUNT(*)>1
); 
SELECT d.* 
    FROM list AS d, temptable AS t 
    WHERE FIND_IN_SET(d.id, t.ID_DUPLICATES) 
    ORDER BY d.id;

寻找重复地址比看起来要复杂得多,特别是当你要求准确性时。在这种情况下,一个MySQL查询是不够的…

我在SmartyStreets工作,在那里我们解决验证和重复数据删除等问题,我看到过很多类似问题的不同挑战。

有一些第三方服务会在列表中为你标记重复项。仅使用MySQL子查询来执行此操作不会考虑地址格式和标准的差异。美国邮政总局(USPS)有一定的指导方针来制定这些标准,但只有少数供应商获得了执行此类操作的认证。

因此,我建议您最好的答案是,例如,将表导出到CSV文件中,并将其提交给有能力的列表处理程序。其中一个是LiveAddress,它会在几秒钟到几分钟内自动为你完成。它将用一个名为“duplicate”的新字段和一个Y值标记重复的行。

我使用以下方法:

SELECT * FROM mytable
WHERE id IN (
  SELECT id FROM mytable
  GROUP BY column1, column2, column3
  HAVING count(*) > 1
)

SELECT * FROM booking WHERE DATE(created_at) = '2022-01-11' 和代码在( 从预订中选择代码 按代码分组 have COUNT(code) > )由id DESC订购