select 해서 delete 하는법좀요 0 2 1,358

by 하울카 [SQL Query] [2017.05.19 14:00:38]


동일한 데이터가 2row 씩 있을경우 중복 제거를 할려고 하거든요

 

컬럼1, 컬럼2

aaa    bbb

aaa    bbb

111     111

111     111

 

이런식으로 있을경우 select는

select 컬럼1, 컬럼2 from dual 

grop by 컬럼1, 컬럼2

having count(*) >1

이렇게 하면 한줄씩만 나오는데 이 결과값을 delete 하고 싶어서요. 

알려주시면 감사하겠습니다

by 마농 [2017.05.19 15:00:04]
DELETE
  FROM t a
 WHERE EXISTS (SELECT 1
                 FROM t b
                WHERE b.컬럼1 = a.컬럼1
                  AND b.컬럼2 = a.컬럼2
                  AND b.ROWID < a.ROWID
               )
;

 


by 랑에1 [2017.05.19 15:07:39]
DELETE FROM 테이블
WHERE rowid IN 
(
  SELECT a.rowid
  FROM 
  (
    SELECT ROW_NUMBER() OVER(PARTITION BY 컬럼1,컬럼2 ORDER BY 컬럼1) rn, a.* 
    FROM 테이블 a
  ) a
  WHERE rn > 1
) 

만들어봤기에 작성은 하는데 마농님꺼에 비해 좋아뵈진 않네요 ㅋㅋ

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입