카테고리 없음
MySQL - 중복 레코드 삭제하기
쓸쓸한사람
2023. 3. 4. 12:07
https://airpage.org/xe/tool_data/24063
[TIP] MySQL - 2개이상의 필드 정보를 이용하여 중복 레코드 삭제하기 - 개발도구 - AiRPAGE
예를 들어, 아래와 같이 중복된 레코드가 잔뜩 있다고 가정합니다. mysql> SELECT * FROM my_dup_table; idNo field1 field2 field3 1 abcd abcde abcd 2 abcd abcde abcd <--중복 3 ttt ttt ttt 4 ttt tta ttt 5 abcd a...
airpage.org
저기에서 퍼온글
예를 들어, 아래와 같이 중복된 레코드가 잔뜩 있다고 가정합니다.
1
2
3
4
5
6
7
8
9
10
11
|
mysql> SELECT * FROM my_dup_table;
idNo field1 field2 field3
1 abcd abcde abcd
2 abcd abcde abcd <--중복
3 ttt ttt ttt
4 ttt tta ttt
5 abcd abcde atd
6 abcde abcde abcd
7 ttt tta ttt <--중복
8 ttt ttt ttt <--중복
|
물론, idNo 같은 인덱스 필드의 레코드 값들은 각자 고유하다는 가정도 포함 합니다.
즉, field1, field2, field3 필드들의 레코드 값들이 상기 내용과 같이 레코드 간에 중복이 있을수 있으며, 아래와 같이 중복된 레코드들을 제거하고 싶다고 가정합니다.
1
2
3
4
5
6
|
idNo field1 field2 field3
1 abcd abcde abcd
3 ttt ttt ttt
4 ttt tta ttt
5 abcd abcde atd
6 abcde abcde abcd
|
MySQL 쿼리는 아래와 같습니다.
1
|
delete from [테이블] where [인덱스필드] NOT IN (SELECT * from (SELECT MIN([인덱스필드]) FROM [테이블] GROUP BY [중복필드1],[중복필드2], [중복필드3], ... ) AS tempTable);
|
예를 들면 아래와 같습니다.
1
|
delete from my_dup_table where idNo NOT IN (SELECT * from (SELECT MIN(idNo) FROM my_dup_table GROUP BY field1,field2, field3) AS te
|