나는 수천 개의 행 중 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
...
나는 수천 개의 행 중 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
...
하나의 해결책은 다른 테이블을 생성하는 것입니다 :
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는이 두 열이 포함 물론 가정한다.
SELECT DISTINCT
당신의 친구입니다.
'table = select distinct * from table'? –
의사 코드로 읽습니다. 그렇습니다. – tobiasbayer
매우 명확하지 않다. 예제로 자세히 설명하십시오. –
각 유형의 임의의 행을 제거 하시겠습니까? – kba
그들은 정확히 동일합니다. 그래서 나는 상관하지 않습니다. –