복붙노트

[SQL] 테이블에서 중복 행을 삭제

SQL

테이블에서 중복 행을 삭제

내가 삭제할 중복 레코드가 내 데이터베이스의 테이블이있다. 나는 이것에 대한 별개의 항목으로 새 테이블을 생성하지 않습니다. 내가 원하는 새로운 테이블을 생성하지 않고 기존의 테이블에서 중복 항목을 삭제하는 것입니다. 이 작업을 수행 할 수있는 방법이 있습니까?

 id           action
 L1_name      L1_data
 L2_name      L2_data
 L3_name      L3_data   
 L4_name      L4_data
 L5_name      L5_data
 L6_name      L6_data
 L7_name      L7_data
 L8_name      L8_data
 L9_name      L9_data
 L10_name     L10_data
 L11_name     L11_data
 L12_name     L12_data
 L13_name     L13_data 
 L14_name     L14_data
 L15_name     L15_data

내 모든 필드는 다음을 참조하십시오 ID는 모든 행에 대해 고유합니다. L11_data는 각 작업 필드에 고유합니다. 액션이 산업의 이름을 가지고있는 동안 L11_data는 회사 이름을 가지고있다.

그래서 내 데이터에 나는 그들의 각각의 산업 L11_data에서 기업의 중복 된 이름을 보내고 있습니다.

내가 원하는 것은해야하는 것은 고유 한 이름과 액션에 저장되어있는 특정 산업에서 기업의 다른 데이터입니다. 나는 당신이 사람들이 그것을 이해할 수있는 방법으로 내 문제를 언급 한 바랍니다.

해결법

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

    1.예, 고유 ID 필드가 가정, 당신은 ID를 제외한 동일한 모든 레코드를 삭제할 수 있지만 값의 자신의 그룹에 대해 "최소 ID"를 필요가 없습니다.

    예, 고유 ID 필드가 가정, 당신은 ID를 제외한 동일한 모든 레코드를 삭제할 수 있지만 값의 자신의 그룹에 대해 "최소 ID"를 필요가 없습니다.

    예 쿼리 :

    DELETE FROM Table
    WHERE ID NOT IN
    (
    SELECT MIN(ID)
    FROM Table
    GROUP BY Field1, Field2, Field3, ...
    )
    

    노트:

    편집 : 당신이 고유 인덱스가없는 경우, 내 추천은 단순히 자동 증분 고유 인덱스를 추가하는 것입니다. 주로 그것의 좋은 디자인 때문에, 또한 당신이 위의 쿼리를 실행할 수 있기 때문이다.

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

    2.

    ALTER IGNORE TABLE 'table' ADD UNIQUE INDEX(your cols);
    

    중복 GET NULL, 당신은 삭제할 수 있습니다

  3. ==============================

    3.

    DELETE
    FROM table_x a
    WHERE rowid < ANY (
      SELECT rowid
      FROM table_x b
      WHERE a.someField = b.someField
       AND a.someOtherField = b.someOtherField
      )
    WHERE (
      a.someField,
      a.someOtherField
      ) IN (
      SELECT c.someField,
       c.someOtherField
      FROM table_x c
      GROUP BY c.someField,
       c.someOtherField
      HAVING count(*) > 1
      )
    

    위의 질의에서 someField 및 someOtherField의 조합은 특유 중복을 식별해야합니다.

  4. from https://stackoverflow.com/questions/1043488/deleting-duplicate-rows-from-a-table by cc-by-sa and MIT license