2011-09-07 5 views
0

안녕하십니까, stackoverflownians,두 개의 열에서 중복을 제거하십시오.

두 개의 열에 중복 된 테이블이 있습니다. 단지 COL1에 대한

## table_1 
col1 col2 

1   10 
1   10 
1   10 
1   11 
1   11 
1   12 
2   20 
2   20 
2   21 
2   21 


# should return this tbl without duplication 

col1 col2 

1   10 
1   11 
1   12 
2   20 
2   21 

내 앞의 코드 계정 및 I가이를 조회하는 방법을 알고하지 않습니다 행 A의 번호가 행 B의 COL1과 COL2에 복제하는 경우, 난 단지 유지을 행한다는 것을 의미 두 coluns는 :

CREATE TABLE temp LIKE db.table_1; 
INSERT INTO temp SELECT * FROM table_1 WHERE 1 GROUP BY col1; 
DROP TABLE table_1; 
ALTER TABLE temp RENAME table_1; 

그래서 나는 그것에 대해 생각 :

CREATE TABLE temp LIKE db.table_1; 
INSERT INTO temp(col1,col2) 
    SELECT DISTINCT col1,col2 FROM table_1; 

then drop and rename.. 

그러나 나는 그것이 먹힐 확실하지 않다 그것은 너무 오래 나는 중지해야합니다 걸리는 경우 MySQL은, 불안정한 경향이있다 쿼리 및 그 내 CR .. .. 다시

코드의 어떤 제안을 T.T

우리는 200,000,000 행이 그들 모두가 하나 개 이상의 중복이를 서버 화산재? :) 또한 .. 얼마나 걸릴까요? 분 또는 시간?

+0

이 질문의 첫 번째 대답을 확인하십시오. 해결책을 찾는 데 도움이 될 수 있습니다. http://stackoverflow.com/questions/7105618/how-to-get-only-repeated-records-in-a-table –

+0

'INSERT INTO ... SELECT DISTINCT'가 올바른 방법입니다. 안정성 문제가있는 경우 쿼리가 완료 될 때까지 사이트/시스템을 오프라인 상태로 만드십시오. 미리 가동 중단 시간을 계획하십시오. – cdhowie

답변

0

당신은 이미 꽤 방법을 알고 :

당신은 INSERT 대신이 또한

사용 INSERT IGNORE을 시도 할 수 있습니다. 레코드가 기존 레코드를 복제하지 않으면, MySQL은 평소와 같이 레코드를 삽입합니다. 레코드가 중복되면, IGNORE 키워드는 MySQL에 오류를 발생시키지 않고 자동으로 무시하도록합니다.

기존 테이블에서 읽은 다음 INSERT IGNORE을 사용하여 새 테이블에 씁니다. 이렇게하면 리소스 사용량에 따라 삽입 프로세스를 제어 할 수 있습니다.

INSERT IGNORE를 사용할 때 키 위반이 발생하면 MySQL은 경고를 표시하지 않습니다 !!!

+0

고마워요! 그래서 내가 INSERT temp (col1, col2)에 INSERT DISTINCT col1, col2 FROM table_1 ==> INSERT를하는 것보다 빠릅니다. – madkitty

+1

INSERT IGNORE INTO temp (col1, col2) SELECT DISTINCT col1, col2 from table_1 –

+0

이것이 어떻게 수행되는지 알고 싶습니다. 매우 유망한 것으로 들립니다. – Mindfulgeek

0

별개의 절이 사용하는 방법이지만 많은 레코드를 실행하는 데 시간이 걸립니다. 나는 autoincrment 인 ID 열을 추가하고, 당신의 pk입니다. 그런 다음 시간 초과되지 않는 단계로 중복 제거를 실행할 수 있습니다.

행운과 HTH - 조

+0

OH WAIT !! 나는 정말로 그것을 원했어. 나는 col1에 ID PK를 추가하려고 시도했으나 오류가 있다는 것을 보여 주었다. ID 번호 AUTO_INCREMENT 초등식 키를 추가해야합니까? – madkitty

+0

OH 내가 잘못 읽었습니다 ... 열 ID가 AUTO_INCREMENT PK 인 경우 어떻게 ... 더 빠를 것입니까? – madkitty

+0

은 별도의 ID 열과 함께 일괄 적으로 처리 할 수 ​​있습니다. id <100,000 .. 등. – Mindfulgeek

관련 문제