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
);
'Back-end > DataBase' 카테고리의 다른 글
[DB][oracle] 프로시저 Procedure (0) | 2019.01.08 |
---|---|
[DB]프로시저를 이용한 데이터 입력 및 검증 (0) | 2018.07.05 |
Database - 정규화란? Normalization (0) | 2018.06.27 |
sql 활용 연습문제. (0) | 2018.06.25 |
[DB]Transaction 트랜잭션이란? (0) | 2018.06.22 |