从某些字段的表匹配记录中删除重复数据


Delete duplicate data from a table matched record for some fields

我有一个包含 7 个字段的表格"产品"

1 Prod_id (PK)
2 Company_id
3 Name
3 Code
5 Start Date
6 End Date
7 Entry Date
8 Description

我想删除所有重复记录(匹配的 2 t0 6 字段以进行复制),只保留一个具有最新输入日期的记录。

mysql 中是否有任何查询来执行此任务。或我如何使用 php 来做到这一点。

您可以添加唯一索引并删除重复项

ALTER IGNORE TABLE Product
ADD UNIQUE INDEX dup_idx (Prod_id, Company_id, Name, Code,Start Date,End Date);

试试这个:

我过去遇到过同样的问题并找到了这个解决方案。我提到查询如下:

DELETE FROM Product 
            USING Product, Product AS P 
            WHERE MIN(DATEDIFF(P.Entry_Date - Product.Entry_Date))
            AND Product.Company_id = P.Company_id 
            AND Product.Name = P.Name 
            AND Product.Code = P.Code;

注意:根据您的要求添加和删除字段。

谢谢