복붙노트

[SQL] 중복 레코드를 삭제

SQL

중복 레코드를 삭제

난 그냥 하나 개의 레코드를 원하는 테이블에 배치에 존재하는 중복 레코드를 삭제하고이 쿼리를 통해 수행 할 수 있습니다 쿼리 됐나 의해 삭제 될 그들에게 휴식을 할 수있는 몇 가지 방법이있다. 제안하십시오

해결법

  1. ==============================

    1.이 시도 -

    이 시도 -

    먼저 테이블에 IDENTITY 등의 id 컬럼을 추가 -

    alter <tablename> add id INT IDENTITY
    

    그런 다음 중복 레코드를 삭제하는 쿼리 아래 사용 -

    delete 
    FROM <tablename>
    WHERE id IN
    (
    SELECT MAX(id)
    FROM <tablename>
    GROUP BY <columnnames defining uniqueness>
    having count ( * )   > 1
    )
    

    그것은 단지 기존 행 중 하나 개 중복을 삭제하는 것을 고려하십시오. 공유 조건을 그룹화하는 것이 세 행 즉이있는 경우 -이하지 않습니다 작품은, 당신이 (더 행이 삭제되지 않을 때까지) 쿼리를 여러 번 실행하거나 삭제 조건을 변경하지 않는 한.

  2. ==============================

    2.별개의 사용 :

    별개의 사용 :

    SELECT distinct * FROM Table ....
    
  3. ==============================

    3.그것은 기본적으로 테이블의 구조에 따라 달라집니다, 그것은이 제약 조건의 수와는 어떤가있는 경우, 기본 키의 열 수.

    그것은 기본적으로 테이블의 구조에 따라 달라집니다, 그것은이 제약 조건의 수와는 어떤가있는 경우, 기본 키의 열 수.

    당신은 대부분의 impotantly 당신이 당신의 쿼리 iwth 그 중복을 제거하는 데 걸리는 시간을 고려할 필요가 다음이 위의 제약 조건에 따라 고유 한 기록을 확인하고 할 optmized 쿼리를 찾을 필요가있다.

    당신이 전체 구조와 몇 가지 예를 들어 중복 된 데이터를 게시하지 않는 그래서 아무도 언급 할 수 없다.

    이 작은 입력이 도움이되기를 바랍니다.

  4. ==============================

    4.여기에 삭제 중복 레코드의 샘플 예입니다

    여기에 삭제 중복 레코드의 샘플 예입니다

    Create table #Test (colA int not null, colB int not null, colC int not null, id int not null identity) on [Primary]
    GO
    INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
    INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
    INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
    
    INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
    INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
    INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
    
    INSERT INTO #Test (colA,colB,colC) VALUES (4,5,6)
    GO
    Select * from #Test
    GO
    Delete from #Test where id <
    (Select Max(id) from #Test t where #Test.colA = t.colA and
    #Test.colB = t.colB and
    #Test.colC = t.colC)
    GO
    Select * from #Test
    GO
    
  5. from https://stackoverflow.com/questions/3385661/deleting-duplicate-records by cc-by-sa and MIT license