我想删除MySQL数据库中表的重复记录。
在该图片ID中是自动增量,但我希望 customer_invoice_id 唯一,但想要删除重复记录。 E.G我想删除1104记录,但现在我删除1105这是该查询的最新记录。
ALTER IGNORE TABLE table ADD UNIQUE KEY idx1(customer_invoice_id);
答案 0 :(得分:2)
在设置约束之前,请先手动删除。
DELETE a
FROM tableName a
LEFT JOIN
(
SELECT customer_invoice_id, MAX(id) id
FROM tableName
GROUP BY customer_invoice_id
) b ON a.customer_invoice_id = b.customer_invoice_id AND
a.id = b.id
WHERE b.customer_invoice_id IS NULL
这将保留每个customer_invoice_id
的最新记录。你现在可以执行这个陈述,
ALTER TABLE tableName ADD UNIQUE KEY idx1(customer_invoice_id)
演示,
答案 1 :(得分:1)
您可以使用LEFT JOIN删除以查找ID更高的重复项;
DELETE i1
FROM invoices i1
LEFT JOIN invoices i2
ON i1.customer_id = i2.customer_id
AND i1.customer_invoice_id = i2.customer_invoice_id
AND i1.id < i2.id
WHERE i2.customer_invoice_id IS NOT NULL
与往常一样,在从Internet上的随机人员运行更新/删除之前备份您的数据:)