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

时间:2013-10-25 10:59:49

标签: php mysql

我有一个表“产品”,包含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做到这一点。

2 个答案:

答案 0 :(得分:0)

您可以添加唯一索引并使用

删除重复项
ALTER IGNORE TABLE Product
ADD UNIQUE INDEX dup_idx (Prod_id, Company_id, Name, Code,Start Date,End Date);

答案 1 :(得分:0)

试试这个:

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

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;

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

由于