0

MySQL テーブルがあります。これには、データ フィードから取得した郵送先住所が含まれています。しかし、郵送先住所の顧客レコードがないため、マスター TABLE に既に存在するかどうかを確認するためのキーとして顧客レコードを照合する簡単な方法がありません。そこで、新しい日次データ フィードをマスター テーブルに追加してから、重複を削除することにしました。

重複を削除する最も安全な方法は何ですか? 明らかに、ID 列フィールドは無視したいと思います。しかし、次のフィールドでこれを行うにはどうすればよいですか。

company_name
contact_name
address1
address2
address3
city
state
zipcode
phone_number
email_address

UNIQUE KEY を持つ ALTER TABLE を含むように MySQL TABLE を再構築すると、安全でしょうか? 例えば:

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

上記は、重複したレコードが最初から INSERT されるのを安全に防ぐでしょうか?

ありがとう!

4

2 に答える 2

0

これは、要件に基づいて最大または最小を選択して使用できる最も単純なクエリです。

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

ありがとう

于 2013-05-06T09:12:23.723 に答える
-1

DELETE a FROM test a LEFT JOIN ( SELECT MIN(id) AS id, company_name, contact_name, address1, address2, address3, city, state, zipcode, phone_number, email_address FROM test GROUP BY company_name, contact_name, address1, address2, address3, city 、都道府県、郵便番号、電話番号、電子メールアドレス) 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.address3 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 は NULL です

于 2013-10-22T11:57:09.283 に答える