고유 키 또는 기본 키가없는 테이블이 있습니다. 여기에는 50 개의 열이 있으며이 열 중 하나 또는 모두가 중복 될 수 있습니다. 중복 행을 모두 삭제하지만 첫 번째 발생은 어떻게 유지합니까?기본 키가없는 모든 중복 행을 어떻게 삭제합니까?
답변
일반적인 SQL 접근법은 데이터를 저장하고 테이블을 자르고 데이터를 다시 삽입하는 것입니다. 구문은 데이터베이스에 의해 조금 다르지만, 여기에 예입니다
create table TempTable as
select distinct * from MyTable;
truncate table MyTable;
insert into MyTable
select * from TempTable;
이 임시 테이블을 필요로하지 않는 다른 방법이 있지만, 그들은 더욱 데이터베이스 의존한다.
중복 행 집합의 첫 번째 행을 떠날 것인가? RDBMS는 mysql –
@ Ranchoddasshyamaldaschanchad입니다. . . 모든 열이 동일한 경우 첫 번째 모양을 다른 모양과 어떻게 구별 할 수 있습니까? –
각 행의 정확한 중복되는 행이 세 개인 경우 하나의 행을 남겨두고 두 행을 삭제하고 싶습니다. –
당신은 TABLE tablename에이 중복 고유 인덱스의 추가를 통해 제거 할 수 있습니다 (필드 1, FIELD2, FIELD3 ...) UNIQUE 인덱스를 추가 MySQL 데이터베이스가 무시 다음 명령
ALTER를 사용하여 사용하는 경우 심지어 중복 된 항목으로. (키워드가 이렇게 사용 IGNORE)
Oracle 데이터베이스가
이 TABLENAME에서 삭제를 다음 명령을 사용하여 사용하는 경우에 (ROW1에 의해 TABLENAME 그룹에서 분 (ROWID)를 선택하지 ROWID 경우 , 행 2, 행 3 .....)
RDBMS는 무엇입니까? 뭔가가 작동 할 수 있습니다 : http://stackoverflow.com/questions/15053693/deleting-duplicate-record-in-sql-server – Dan
데이터베이스가 MySQL입니다 –