2013-05-06 6 views
0

나는 MySQL 테이블을 가지고있다. 여기에는 데이터 피드에서 얻은 우편 주소가 포함됩니다. 그러나 우편 주소에 대한 고객 레코드가 없으므로 고객 레코드를 마스터 테이블에 이미 있는지 확인하기위한 키로 쉽게 일치시킬 수있는 방법이 없습니다. 따라서 새로운 일일 데이터 피드를 마스터 TABLE에 추가 ​​한 다음 중복을 제거하기로 결정했습니다.MySQL : MySQL 테이블에서 중복 행을 제거하는 가장 안전한 방법은 무엇입니까?

중복을 제거하는 가장 안전한 방법은 무엇입니까? 분명히 ID 열 필드를 무시하고 싶습니다. 하지만 어떻게 내가 다음 필드에 대해이 작업을 수행 할 :

company_name 
contact_name 
address1 
address2 
address3 
city 
state 
zipcode 
phone_number 
email_address 

내가 뭘 UNIQUE KEY와 ALTER 테이블을 포함하는 MySQL의 테이블을 다시 작성하는 경우, 그 안전 할 것인가? 예 :

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

중복 된 레코드가 처음부터 INSERT되는 것을 방지합니까?

감사합니다.

+0

더 많은 샘플 레코드를 제공 할 수 있습니까? –

+0

복제본의 의미를 정의 하시겠습니까? – bksi

+0

http://stackoverflow.com/questions/14816863/what-is-the-best-way-to-delete-duplicate-values-from-mysql-table 사용해보기 – Stvdd

답변

0

가장 간단한 방법입니다. 요구 사항에 따라 최대 또는 최소를 선택하십시오.

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

감사

+0

ALTER TABLE 사람들이 UNIQUE KEY를 사용하여 추가 한 예제를 살펴보십시오. 나는 네가 생각하는 것을 알고 싶어한다. 감사! – Edward

-1

삭제하려면 LEFT이 ( 이드, COMPANY_NAME, CONTACT_NAME, 주소 1, 주소 2, address3, 주, 도시, 우편 번호, PHONE_NUMBER, EMAIL_ADDRESS AS MIN (ID)를 선택 가입 시험 FROM FROM 테스트 GROUP BY company_name, address_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 여기서 b.id는 NULL입니다.

+0

올바르게 형식을 지정하십시오. – SSP

관련 문제