by 나는아이 [SQL Query] [2020.04.01 18:15:39]
TABLE 이름이 VALUE라는 곳에서
아래 조건에서 ID 컬럼과 UNI_NUM이 같을경우, 마지막 레코드만 남기고 삭제하는 방법이 없을까요?
고수님들 도와주세요 ㅠ
아래의 ID / UNI_NUM이 같은 빨간색 리코드만 삭제 하고 싶습니다 ㅠ
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 );
감사합니다 ~ MSSQL 인데 이 경우에는 어떻게 쓰면 될까요?
찾아보니 보통 이런식이더라구요~
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
PK 가 따로 없나요?