2014-02-11 4 views
0

고유 키 또는 기본 키가없는 테이블이 있습니다. 여기에는 50 개의 열이 있으며이 열 중 하나 또는 모두가 중복 될 수 있습니다. 중복 행을 모두 삭제하지만 첫 번째 발생은 어떻게 유지합니까?기본 키가없는 모든 중복 행을 어떻게 삭제합니까?

+1

RDBMS는 무엇입니까? 뭔가가 작동 할 수 있습니다 : http://stackoverflow.com/questions/15053693/deleting-duplicate-record-in-sql-server – Dan

+0

데이터베이스가 MySQL입니다 –

답변

4

일반적인 SQL 접근법은 데이터를 저장하고 테이블을 자르고 데이터를 다시 삽입하는 것입니다. 구문은 데이터베이스에 의해 조금 다르지만, 여기에 예입니다

create table TempTable as 
    select distinct * from MyTable; 

truncate table MyTable; 

insert into MyTable 
    select * from TempTable; 

이 임시 테이블을 필요로하지 않는 다른 방법이 있지만, 그들은 더욱 데이터베이스 의존한다.

+0

중복 행 집합의 첫 번째 행을 떠날 것인가? RDBMS는 mysql –

+0

@ Ranchoddasshyamaldaschanchad입니다. . . 모든 열이 동일한 경우 첫 번째 모양을 다른 모양과 어떻게 구별 할 수 있습니까? –

+0

각 행의 정확한 중복되는 행이 세 개인 경우 하나의 행을 남겨두고 두 행을 삭제하고 싶습니다. –

1

당신은 TABLE tablename에이 중복 고유 인덱스의 추가를 통해 제거 할 수 있습니다 (필드 1, FIELD2, FIELD3 ...) UNIQUE 인덱스를 추가 MySQL 데이터베이스가 무시 다음 명령

ALTER를 사용하여 사용하는 경우 심지어 중복 된 항목으로. (키워드가 이렇게 사용 IGNORE)

Oracle 데이터베이스가

이 TABLENAME에서 삭제를 다음 명령을 사용하여 사용하는 경우에 (ROW1에 의해 TABLENAME 그룹에서 분 (ROWID)를 선택하지 ROWID 경우 , 행 2, 행 3 .....)

관련 문제