我在SQL Server表中有一条重复记录,(显然)有不同的唯一ID。
CustomerId FirstName LastName|
1 John Doe |
2 John Doe |
数据库中已经有子项(比如说订单表),其中一些与其中一个相关,而另一个与另一个相关。
OrderId CustomerId DateEntered|
100 1 2018/11/01 |
101 2 2018/11/09 |
他们都是指同一个客户。 我想删除重复的记录。有没有一种方法可以自动更新Orders表中值为2的CustomerId,使其值为1?
答案 0 :(得分:0)
您可以使用窗口函数来解决此问题
WITH CTE AS
(
SELECT T1.*,
MIN(T1.CustomerId) OVER(PARTITION BY T1.FirstName, T1.LastName ORDER BY T1.CustomerId) RN
FROM T1
)
UPDATE T2
SET T2.CustomerId = CTE.RN
FROM T2 INNER JOIN CTE ON T2.CustomerId = CTE.CustomerId;
但是首先,您需要解决此问题,客户应该具有一个(1)Unique
ID,而不是多个ID。