중복데이터 삭제 관련 0 4 372

by 나는아이 [SQL Query] [2020.04.01 18:15:39]


TABLE 이름이 VALUE라는 곳에서 

아래 조건에서 ID 컬럼과 UNI_NUM이 같을경우, 마지막 레코드만 남기고 삭제하는 방법이 없을까요? 

고수님들 도와주세요 ㅠ 

 

아래의 ID / UNI_NUM이 같은 빨간색 리코드만 삭제 하고 싶습니다 ㅠ

ID UNI_NUM
1 333
1 111
1 222
1 333
2 333
2 111
2 222
2 333
by pajama [2020.04.01 18:33:24]

rowid로 비교해서 제거하는 방법이 있는데..아마 검색하면 방법은 여러가지 일듯 합니다.

참고 링크 : http://www.gurubee.net/lecture/1640

DELETE FROM value a
WHERE rowid > (SELECT MIN(rowid) FROM value b
WHERE b.id = a.id
  AND b.uni_num = a.uni_num
);

by 나는아이 [2020.04.01 18:52:00]

감사합니다 ~ MSSQL 인데 이 경우에는 어떻게 쓰면 될까요?


by pajama [2020.04.01 19:30:48]

찾아보니 보통 이런식이더라구요~

WITH CTE AS(
   SELECT *, ROW_NUMBER() OVER (PARTITION BY ID, UNI_NUM ORDER BY ID, UNI_NUM) as RowNumber
   FROM value
)
DELETE FROM CTE WHERE RowNumber > 1

 


by 마농 [2020.04.02 10:01:03]

PK 가 따로 없나요?

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