당신은 중복을 찾기 위해 OVER()
절에 PARTITION BY
와 ROW_NUMBER
을 사용할 수 있으며 업데이트 가능한 CTE 그에 따라 값을 변경할 수 :
DECLARE @dummyTable TABLE(ID INT IDENTITY, UserName VARCHAR(100));
INSERT INTO @dummyTable VALUES('Peter'),('Tom'),('Jane'),('Victoria')
,('Peter') ,('Jane')
,('Peter');
WITH UpdateableCTE AS
(
SELECT t.UserName AS OldValue
,t.UserName + CASE WHEN ROW_NUMBER() OVER(PARTITION BY UserName ORDER BY ID)=1 THEN '' ELSE '_duplicate' END AS NewValue
FROM @dummyTable AS t
)
UPDATE UpdateableCTE SET OldValue = NewValue;
SELECT * FROM @dummyTable;
당신은으로 ROW_NUMBER()
를 포함 할 수 있습니다
ID UserName
1 Peter
2 Tom
3 Jane
4 Victoria
5 Peter_duplicate
6 Jane_duplicate
7 Peter_duplicate
결과를 다른 서지는 중복 서수를 찾습니다. 1
으로 번호가 매겨진 가장 빠른 (또는 최신이어야하는) 정렬 절이 있으면 중복을 찾아서 쉽게 수정할 수 있어야합니다.
일단이 혼란을 청소하면 새로운 dup을 확보하지 않아야합니다. 그러나 당신은 이미 이것을 알고 있습니다 :-D
중복 된 항목을 확인하셨습니까? 당신은 어떤 질문이 있습니까? –