#title 중복 데이터 삭제하기 [[TableOfContents]] ==== DELETE문 ==== {{{ --샘플 테이블 생성 CREATE TABLE MEMBER( IDX int identity(1,1) , NAME Char(20) ) GO --샘플 데이터 입력 INSERT INTO MEMBER VALUES('A') INSERT INTO MEMBER VALUES('A') INSERT INTO MEMBER VALUES('B') INSERT INTO MEMBER VALUES('B') INSERT INTO MEMBER VALUES('B') INSERT INTO MEMBER VALUES('B') INSERT INTO MEMBER VALUES('C') INSERT INTO MEMBER VALUES('C') GO --2000이하 버전 DELETE FROM MEMBER WHERE IDX IN ( SELECT A.IDX as IDX FROM MEMBER A INNER JOIN ( SELECT MAX(IDX) AS IDX , NAME AS NAME , COUNT(*) AS CNT FROM MEMBER GROUP BY NAME HAVING COUNT(*) >1) B ON A.NAME = B.NAME AND A.IDX!=B.IDX ) --2005이상 버전(위 솔루션보다 훨씬 적은 비용으로 처리할 수 있다) DELETE A FROM ( SELECT IDX , NAME , ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY IDX) NUM FROM MEMBER ) A WHERE NUM <> 1 }}} ==== 조언 ==== 중복 데이터가 들어간 원인은 개체 무결성 위배때문이다. 현실과의 불일치로 발생한 현상이다. 데이터의 양이 많으면 부담스러운 SQL문이다. GROUP BY 또는 기타 조회 방법을 이용하여 중복을 제거한 후 다시 입력하는 방법을 사용하는 것이 좋다.