2011-08-09 6 views
0

데이터베이스에서 모든 중복을 삭제하려고합니다. 이 웹 사이트에서 아래 코드를 발견했습니다. 문제는 내 전체 데이터베이스를 삭제합니다. 슬프게도 왜 MySQL이 모든 항목을 없애고 중복 항목을 없애야하는지에 대해 알지 못합니다.MS 액세스 사용 중복 찾기 및 삭제

DELETE FROM RosterPool AS t1 
WHERE EXISTS (SELECT 1 from RosterPool t2 
WHERE t1.Rate = t2.Rate 
AND t1.FullName = t2.FullName 
AND t1.Last4 = t2.Last4 
AND t1.Graduated = t2.Graduated); 

모든 복제본을 다른 테이블로 이동하고 해당 테이블을 삭제하는 방법이 있습니까?

+0

저는 MS Access를 사용 중이며 데이터베이스 쿼리는 MySQL 언어를 사용합니다. – Navybofus

답변

0

SQL 데이터베이스에는 "이동"작업이 없습니다. 삽입, 업데이트 및 삭제 만 있습니다.

안전하게 재생하려면 삭제 쿼리를 선택 쿼리로 전환하여 삭제 쿼리로 실행하면 정확히 무엇이 손실되는지 확인하지만 하나에서 행을 "이동"할 수는 없습니다. insert/select + delete 작업 시퀀스를 수행하지 않고도 테이블을 다른 테이블에 추가 할 수 있습니다.

0

중복을 제거하려는 열에 uniqe 키만 강제로 적용하면됩니다. 은 당신이 쓰는 칼럼 속도에 대한 고유 키를 추가하려면 : 이미, 를 중복 행이있는 경우 당신에게 오류를 줄 것하지만 키워드가 무시 추가하여, 당신이 그것을 강제 할 수

ALTER TABLE RosterPool ADD UNIQUE (Rate); 

는 누구와도 바꿀 수없는 다이애나을 추가하고 경고를 무시하십시오.

ALTER IGNORE TABLE RosterPool ADD UNIQUE (Rate); 
+0

팁 주셔서 감사. 이제 ... 이것으로 주위를 둘러보고 다른 열을 수표에 추가 할 것입니다. 왜냐하면 실제로 복제본을 찾는 유일한 방법은 LastNames와 Last4가 다른 항목과 일치하는지 확인하는 것입니다. LastNames와 Last4 's – Navybofus

+0

키에 하나 이상의 열을 추가 할 수 있습니다. "ALTER IGNORE TABLE RosterPool ADD UNIQUE (Rate, FullName (100), Last4, Graduated)"는 텍스트 열에 길이를 지정해야합니다 –