Día de Ruru
[BE] SQL 테이블 내 중복 데이터 제거 본문
내 의도와 다르게 데이터가 중복으로 들어가있는 경우 중복 데이터들을 일괄 삭제해줄 때 사용할 수 있다.
SELECT *
FROM 테이블이름
WHERE 유니크아이디
NOT IN
(SELECT MIN(유니크아이디)
FROM 데이블이름
GROUP BY 중복 체크해야 하는 모든 컬럼);
SELECT *
FROM test_table
WHERE testid
NOT IN
(SELECT MIN(testid)
FROM test_table
GROUP BY name, age, phone, address);
우선 SELECT 구문으로 중복되는 데이터들을 확인한다.
NOT IN () 안에 해당하는 것들을 제외한 데이터들을 확인할 수 있다.
괄호 안을 자세히 보면 테이블안에 있는 모든 컬럼명으로 GROUP BY를 한다. 이때 같은 모든 컬럼 명이 같은 데이터를 갖고있으면 중복데이터로 취급한다.
중복데이터들 중 testid 가 가장 작은 것을 가져온다. testid가 가장 작은 것이 가장 최초에 입력된 데이터라고 판단한다.
여기까지가 중복데이터들중 가장 최초에 입력한 데이터들만 걸러내는 작업이다.
여기에서 걸러낸 데이터들을 뺀 나머지 데이터들을 SELECT NOT IN 구문으로 가져오면 중복된 나머지 데이터들이다!!
이제 여기에서 확인한 데이터들을 삭제하자!
DELETE FROM 테이블이름
WHERE 유니크아이디
NOT IN
(SELECT MIN(유니크아이디)
FROM 데이블이름
GROUP BY 중복 체크해야 하는 모든 컬럼);
DELETE FROM test_table
WHERE testid
NOT IN
(SELECT MIN(testid)
FROM test_table
GROUP BY name, age, phone, address);
'백엔드' 카테고리의 다른 글
[BE] SQL 데이터 통계 조회 (0) | 2024.04.21 |
---|---|
[BE] Nginx 공부하기 (0) | 2023.12.12 |
[BE] DNS란 무엇일까? (0) | 2023.08.06 |
Comments