게시판
      
상위분류 : 잡필방 중위분류 : 서류가방 하위분류 : 전산과 컴퓨터
작성자 : 문시형 작성일 : 2014-02-13 조회수 : 3,089
제 목 : 중복된 데이타 제거 쿼리

--테이블 디자인에서 seq라는 컬럼을 추가한다.

--seq 타입은 int 형이고, 널값을 허용하지 않으며, ID속성을"예" 자동증가값 시작은"1", 증가값도 "1"로 지정한다.


 

--테이블의 중복된 값을 표시 함

select distinct(extension_id), seq as no from PY_EXTENSION_INFO

group by extension_id having count(*) > 1


 

select extension_id, seq as no from

( select MIN(seq) as seq, extension_id, COUNT(*) as disNo 

from PY_EXTENSION_INFO

GRoup by extension_id having COUNT(*) > 1 ) as A

order by extension_id asc


 

--중복된 값들을 포함 모든 레코드를 그룹by로 묶어놓은 후에 seq값이 가장 작은값들만 select한다. 그것을 제외한 값을 지우면 되는 것.

delete from PY_EXTENSION_INFO

where seq not in

(select seq as no from

( select MIN(seq) as seq, extension_id, COUNT(*) as disNo 

from PY_EXTENSION_INFO

GRoup by extension_id ) as A)

| | 목록으로