>  기사  >  데이터 베이스  >  Oracle은 중복 데이터를 삭제하고 첫 번째 기록을 유지합니다.

Oracle은 중복 데이터를 삭제하고 첫 번째 기록을 유지합니다.

angryTom
angryTom원래의
2020-02-29 10:37:468409검색

Oracle은 중복 데이터를 삭제하고 첫 번째 기록을 유지합니다.

oracle은 중복된 데이터를 삭제하고 첫 번째 레코드를 유지합니다

1. 테이블에서 중복된 레코드를 찾습니다. 중복된 레코드는 단일 필드(ID)를 기준으로 판단됩니다.

select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1)

2. 테이블에서 중복 레코드는 단일 필드(Id)를 기준으로 판단되며, rowid가 가장 작은 레코드만 남습니다

DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表 GROUP BY id HAVING COUNT(*) > 1);

3 테이블에서 중복된 중복 레코드(여러 필드)를 조회합니다

select * from 表 a where (a.Id,a.seq) in(select Id,seq from 表 group by Id,seq having count(*) > 1)

4. 테이블의 중복된 중복 레코드(다중 필드), 가장 작은 rowid를 가진 레코드만 남습니다

delete from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

5. 조회 테이블의 중복된 중복 레코드(다중 필드)에는 가장 작은 rowid를 가진 레코드가 포함되지 않습니다

select * from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

PHP 중국어 웹사이트에는 무료SQL 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!

위 내용은 Oracle은 중복 데이터를 삭제하고 첫 번째 기록을 유지합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:SQL에서 Case 사용다음 기사:SQL에서 Case 사용