我的数据库表以某种方式基于称为kdaccount的字段复制了一堆值。

我要执行的操作是删除所有重复的kdaccount,但其中一个例外,我希望该日期是最早的提交日期。

我写了一个查询来识别重复的帐户,但是现在我确定如何构造mysql查询以删除它们。

$getVendors = mysql_query("SELECT vendor, nameid, kdaccount, MIN(dw_vendors.submitteddate) as `smallestDate`
                                                FROM pr_po_main
                                                LEFT JOIN dw_vendors ON pr_po_main.vendor = dw_vendors.kdaccount
                                                WHERE dw_vendors.submitteddate <> '' GROUP BY vendor HAVING COUNT(dw_vendors.kdaccount) > '1'") or die("Get Vendors: " . mysql_error());

最佳答案

希望以下解决方案对您有所帮助,

1.创建dw_vendors的重复表

创建表dw_vendors_dup喜欢dw_vendors

2.使kdaccount成为唯一的

ALTER TABLE dw_vendors_dup ADD UNIQUE (kdaccount);


3.将现有值插入到新表中,忽略重复项

INSERT IGNORE INTO dw_vendors_dup (vendor, nameid, kdaccount, submitteddate)
SELECT vendor, nameid, kdaccount, submitteddate FROM dw_vendors
ORDER BY submitteddate


4.删除旧表dw_vendors
并将重复的一个重命名为dw_vendors

10-04 14:26