我想刪除MySQL數據庫中表的重複記錄。 如何從MySQL數據庫中刪除重複(字段)條目?
在這種圖像ID自動遞增,但我想customer_invoice_id唯一的,但是要刪除重複記錄。 E.G我想刪除1104條記錄,但是現在我刪除了1105這是該查詢的最新記錄。
ALTER IGNORE TABLE table ADD UNIQUE KEY idx1(customer_invoice_id);
我想刪除MySQL數據庫中表的重複記錄。 如何從MySQL數據庫中刪除重複(字段)條目?
在這種圖像ID自動遞增,但我想customer_invoice_id唯一的,但是要刪除重複記錄。 E.G我想刪除1104條記錄,但是現在我刪除了1105這是該查詢的最新記錄。
ALTER IGNORE TABLE table ADD UNIQUE KEY idx1(customer_invoice_id);
在設置約束之前,先進行手動刪除。
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)
演示,
您可以直接刪除使用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
一如往常,備份您的數據運行更新前/從隨機的人上網:)
由於它工作得上刪除。 –