2013-06-18 3 views
0

2 열 기본 키를 사용했지만 두 번째 열 (열 2)에 동일한 항목에 매핑되는 값이 중복되어 있음을 알았습니다 .2 열 기본 키를 준비하기 위해 중복 찾기

두 개의 열 기본 키를 만들려는 새 열 (열 3)을 만들었습니다. 중복 된 광고 항목을 삭제하여 새로운 기본 키에 대한 데이터베이스를 준비해야합니다.

중복 된 열을 분리 할 수있는 검색어를 찾고 있습니다. 예 : 여기서 컬럼 1과 컬럼 3은 모두 중복입니다. 예 :

Column 1 Column 2 Column 3 Remove? 
1   a   x   n 
1   b   x   y 
2   b   y   n 
3   c   z   n 
3   d   z   y 
3   e   z   y 
4   f   x   n 

동일한 3 열이므로 동일하게 유지되므로 어떤 열 값을 유지해도 상관 없습니다.

+0

내 솔루션 당신을 위해 작동합니까? 그렇다면 답변을 [수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)하십시오. –

답변

0

키 열을 그룹화하고 다른 열에서 MIN() 또는 MAX()를 사용하여 유지하려는 데이터를 꺼낼 수 있습니다. [유지하는 값을 신경 쓰지 않는다고 말하면서, 2 열에서].

Select Column1, Column3, MAX(Column2) As Column2 
from Table1 
Group By Column1, Column2 

임시 테이블에 넣은 다음 원래 테이블에서 모든 레코드를 제거하고 임시 테이블의 모든 것으로 교체하십시오.

0

다음은 새 테이블을 만들어 테이블에서 중복 행을 삭제하는 방법의 예입니다. 원본 테이블 이름 (중복 포함)이 tbl이라고 가정하면이 쿼리를 실행 한 후 데이터베이스에 두 개의 테이블 (중복이없는 새 테이블 인 tbl)과 원본 테이블 인 (012ers) 이름이 변경된 tbl_old이 있어야합니다.

CREATE TABLE tbl_unique LIKE tbl; 
    ALTER TABLE tbl_unique 
    ADD UNIQUE KEY unkey(C1,C3); 

INSERT IGNORE INTO tbl_unique 
    SELECT * FROM tbl; 

ALTER TABLE tbl RENAME tbl_old; 
ALTER TABLE tbl_unique RENAME tbl; 

예 : http://sqlfiddle.com/#!2/da167/1/0

출처 : 이 https://dba.stackexchange.com/questions/9602/deleting-duplicates-with-group-by-and-count

관련 문제