어떻게 든 복제 된 테이블이 있습니다. 기본적으로 SourceId라는 테이블에있는 필드로 정의 된 중복 된 모든 레코드를 삭제하려고합니다. 각 소스 ID마다 하나의 레코드 만 있어야합니다.특정 필드를 기반으로 데이터베이스 테이블에서 중복을 삭제하는 방법
거기에 내가 모든 Sourceid 당 하나의 레코드를 가질 수 있도록 모든 중복을 삭제합니다 쓸 수있는 SQL 있습니까?
어떻게 든 복제 된 테이블이 있습니다. 기본적으로 SourceId라는 테이블에있는 필드로 정의 된 중복 된 모든 레코드를 삭제하려고합니다. 각 소스 ID마다 하나의 레코드 만 있어야합니다.특정 필드를 기반으로 데이터베이스 테이블에서 중복을 삭제하는 방법
거기에 내가 모든 Sourceid 당 하나의 레코드를 가질 수 있도록 모든 중복을 삭제합니다 쓸 수있는 SQL 있습니까?
중복 소스 ID를 묶을 수있는 열 ID가 있다고 가정하면이 ID를 사용할 수 있습니다. min(id)
을 사용하면 sourceid 일괄 처리 당 min (id) 만 유지합니다.
delete from tbl
where id NOT in
(
select min(id)
from tbl
group by sourceid
)
나는 이것이 정확하다고 생각하지 않는다. subquery가 다른 sourceid의 min (id)이면 id가 하위 쿼리에 나타날 수 있습니다. 난 당신이 min (id) 당신이 찾고있는 상관 하위 쿼리가 필요하다고 생각합니다. –
@ 여기에 ID가 테이블에서 고유하다는 가정이 있습니다. – RichardTheKiwi
delete from table
where pk in (
select i2.pk
from table i1
inner join table i2
on i1.SourceId = i2.SourceId
)
좋은 방법은 나중에 delete from …
당신이 참조하고 SQL의 특정 버전으로 교체
select * from …
만에 시작하는 것입니다? –