제거하기 전 혹시 모르니 table을 복사하자
CREATE TABLE [복사할 TABLE NAME] LIKE [원본 TABLE];
INSERT INTO [복사할 TABLE] SELECT * FROM [원본 TABLE];
DISTINCT : 중복 제거. 정렬 X
DELETE DISTINCT [FIELD] FROM [TABLE] WHERE [조건];
GROUPBY : 중복 제거. 정렬 O
DELETE FROM [TABLE] WHERE [INDEX NAME] IN (SELECT MIN( [INDEX NAME] ) FROM [TABLE NAME] GROUP BY [중복 제거할 COLUMN_1], [중복 제거할 COLUMN_2] HAVING COUNT(*) > 1)
여기서 INDEX 는 AUTO_INCREMENT로 만든 KEY 값.
중복이면 INDEX 가 낮은 것을 삭제
=> 중복 데이터에서 1개만 남기고 삭제?
DELETE t1 FROM [삭제 TABLE] t1
INNER JOIN [삭제 TABLE] t2
WHERE
t1.[index] > t2.[index] AND
t1.[중복 Column Name] = t2.[중복 Column Name];
같은 TABLE 끼리 비교시켜 1개만 남기고 중복제거
t1, t2 는 비교를 위해 넣은 변수. 아무 이름이나 써도 상관X
<참조 1> https://stormpy.tistory.com/82
<참조 2> https://meanbymin.tistory.com/91
<참조 3> https://www.mysqltutorial.org/mysql-delete-duplicate-rows/
<참조 4> https://hyang2data.tistory.com/3
'Programing > DB' 카테고리의 다른 글
[MySQL] 인덱스(index) 추가 & 삭제 (0) | 2022.06.22 |
---|---|
[MySQL] Cardinality (0) | 2022.06.21 |
[MySQL] MySQL access denied 오류 해결 (0) | 2022.06.14 |
[DB] MySQL DB 백업 및 복구 (0) | 2022.06.01 |
댓글