2012-01-08 4 views
0

나는 수천 개의 행 중 25 개의 복사본이 2 개인 데이터베이스가 있습니다. 어떻게 이들 중 하나를 제거하는 명령을 실행할 수 있습니까? 테이블은 2 개의 외래 키를 포함하는 테이블입니다.SQL에서 전체 중복 제거

예 :

cID | sID 
1 | 1 
1 | 23 
1 | 65 
2 | 45 
2 | 45 -> remove 
2 | 89 
3 | 1 
3 | 65 
3 | 107 
    ... 
+0

매우 명확하지 않다. 예제로 자세히 설명하십시오. –

+0

각 유형의 임의의 행을 제거 하시겠습니까? – kba

+0

그들은 정확히 동일합니다. 그래서 나는 상관하지 않습니다. –

답변

1

하나의 해결책은 다른 테이블을 생성하는 것입니다 :

create table replacement (cID ...., sID ....); 
# Only insert unique rows, which may be long 
insert into replacement select distinct cID, sID from origtable; 
# remove constraints from linked tables to origtable 
# add same constraints to replacement 
# add unique compound index on (cID,sID) to replacement 
drop table origtable; 
alter table replacement rename to origtable; 

이것은 당신의 origtable는이 두 열이 포함 물론 가정한다.

0

SELECT DISTINCT 당신의 친구입니다.

+0

'table = select distinct * from table'? –

+0

의사 코드로 읽습니다. 그렇습니다. – tobiasbayer