SQL Server-将一条记录合并到另一条记录,并更改引用第一个项目的项目以引用合并到其中的项目

时间:2018-11-18 19:51:03

标签: sql-server entity-framework

我在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?

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;

Demo

但是首先,您需要解决此问题,客户应该具有一个(1)Unique ID,而不是多个ID。