2013-05-06 54 views
0

我有一個MySQL表。它包含我們從數據饋送中獲得的郵寄地址。但是,郵寄地址沒有客戶記錄,所以我沒有簡單的方法將客戶記錄作爲關鍵字查看它是否已經存在於主表中。因此,我決定將新的每日數據Feed添加到主TABLE中,然後刪除重複項。MySQL:什麼是從MySQL表中刪除重複行的最安全的方法?

刪除重複項最安全的方法是什麼?很明顯,我想忽略ID列字段。但我怎麼做以下字段:

company_name 
contact_name 
address1 
address2 
address3 
city 
state 
zipcode 
phone_number 
email_address 

如果我重建MySQL表包括ALTER TABLE具有獨特的KEY,那會是安全的嗎?例如:

ALTER TABLE people ADD UNIQUE KEY (company_name,contact_name,address1,address2,address3,city,state,zipcode,phone_number,email_address) 

上述內容是否安全地防止重複記錄被插入以開頭?

謝謝!

+0

你能提供更多樣本記錄嗎? – 2013-05-06 09:09:50

+0

Wloud您可以通過重複來定義您的意思嗎? – bksi 2013-05-06 09:10:17

+0

http://stackoverflow.com/questions/14816863/what-is-the-best-way-to-delete-duplicate-values-from-mysql-table試試這個 – Stvdd 2013-05-06 09:10:58

回答

0

這是最簡單的查詢您可以使用 根據您的要求選擇最大或最小。

DELETE 
FROM MyTable 
WHERE ID NOT IN 
(
SELECT MAX(ID) 
FROM MyTable 
GROUP BY DuplicateColumn1, DuplicateColumn2, DuplicateColumn3) 

感謝

+0

請看我添加的示例使用ALTER TABLE人添加唯一鍵。我很想知道你的想法。謝謝! – Edward 2013-05-06 09:23:05

-1

中DELETE FROM測試 LEFT JOIN ( SELECT MIN(ID)爲ID,COM​​PANY_NAME,CONTACT_NAME,地址1,地址,2地址,城市,州,郵編,PHONE_NUMBER,EMAIL_ADDRESS FROM test GROUP BY company_name,contact_name,address1,address2,address3,city,state,zipcode,phone_number,email_address )b ON a.id = b.id AND a.company_name = b.company_name AND a.contact_name = b .contact_name AND a.address1 = b.address1 AND a.address2 = b.address2 AND a.address3 = b.address 3 AND a.city = b.city AND a.state = b.state AND a.zipcode = b.zipcode AND a.phone_number = b.phone_number AND a.email_address = b.email_address WHERE b.id IS NULL

+0

請格式正確 – SSP 2013-10-22 12:14:17