[SQL]데이터 검증 - 중복 데이터 제거.
SQL 데이터 검증. 중복 데이터 제거
중복된 데이터를 찾고/ 그 데이터의 기본키를 찾아 /기본키를 조건으로 해당 데이터 삭제.
1. 중복 데이터 찾기.
2. 중복 데이터의 기본키(PK)값 찾기.
중복데이터의 PK값을 찾아서 같은 값끼리의 순위를 매긴다.
SELECT cus_no,
IF(@id=id, @rownum:=@rownum+1, @rownum=1) as rnum,
(@id:=id) as id
FROM
(SELECT cus_no , id FROM customer
WHERE id IN (SELECT id FROM customer GROUP BY id HAVING COUNT(id)>1)
)a,
(SELECT @rownum:=1, @id:=' ' FROM DUAL) b
)q ;
WHERE rnum NOT IN(1) // 순위중 1인것 빼고 다 삭제-> 중복값의 첫번째값을 제외하고 나머지값들이 남는다. 즉, 중복된 삭제될 데이터들만 남는다.
3. 찾은 기본키를 조건으로 해당 데이터를 삭제.
기본키가 다음과 같은(앞에서 구한 삭제할 데이터) 데이터들을 삭제하라.
DELETE FROM customer
WHERE cus_no IN (
SELECT cus_no,
IF(@id=id, @rownum:=@rownum+1, @rownum=1) as rnum,
(@id:=id) as id
FROM
(SELECT cus_no , id FROM customer
WHERE id IN (SELECT id FROM customer GROUP BY id HAVING COUNT(id)>1)
)a,
(SELECT @rownum:=1, @id:=' ' FROM DUAL) b
)q
);