[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.예, 고유 ID 필드가 가정, 당신은 ID를 제외한 동일한 모든 레코드를 삭제할 수 있지만 값의 자신의 그룹에 대해 "최소 ID"를 필요가 없습니다.
예, 고유 ID 필드가 가정, 당신은 ID를 제외한 동일한 모든 레코드를 삭제할 수 있지만 값의 자신의 그룹에 대해 "최소 ID"를 필요가 없습니다.
예 쿼리 :
DELETE FROM Table WHERE ID NOT IN ( SELECT MIN(ID) FROM Table GROUP BY Field1, Field2, Field3, ... )
노트:
편집 : 당신이 고유 인덱스가없는 경우, 내 추천은 단순히 자동 증분 고유 인덱스를 추가하는 것입니다. 주로 그것의 좋은 디자인 때문에, 또한 당신이 위의 쿼리를 실행할 수 있기 때문이다.
-
==============================
2.
ALTER IGNORE TABLE 'table' ADD UNIQUE INDEX(your cols);
중복 GET NULL, 당신은 삭제할 수 있습니다
-
==============================
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의 조합은 특유 중복을 식별해야합니다.
from https://stackoverflow.com/questions/1043488/deleting-duplicate-rows-from-a-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 쉼표는 MySQL의 "IN"절에 값을 분리 (0) | 2020.04.12 |
---|---|
[SQL] 잠시 / 루프를 수행하면 10 개 임의 결과를 얻을 수 있습니다 (0) | 2020.04.12 |
[SQL] 어떻게 VARCHAR (날짜)에 16 진수 변환하려면? (0) | 2020.04.12 |
[SQL] MySQL의에서 임의의 행을 선택 (0) | 2020.04.11 |
[SQL] 바이너리 문자열로 SQL 서버 변환 정수 (0) | 2020.04.11 |