UPDATE Table 与 CTE 更新始终具有相同的值

UPDATE Table with CTE update always with the same value

我正在尝试通过数据混洗对数据库中的单个列进行匿名处理。

我创建了这个查询,但是当我 运行 它更新列 FirstName 时总是使用相同的名称:

BEGIN TRAN;

;WITH TCE_Shuffled
AS (
    SELECT ROW_NUMBER() OVER (
            ORDER BY [BusinessEntityID]
            ) AS ORIG_ROWNUM
        ,ROW_NUMBER() OVER (
            ORDER BY NEWID()
            ) AS NEW_ROWNUM
        ,*
    FROM [AdventureWorks2014].[Person].[Person]
    )
UPDATE [AdventureWorks2014].[Person].[Person]
SET FirstName = t2.FirstName
FROM TCE_Shuffled t1
JOIN TCE_Shuffled t2 ON t1.ORIG_ROWNUM = t2.NEW_ROWNUM

SELECT *
FROM [AdventureWorks2014].[Person].[Person]

ROLLBACK TRAN

SELECT *
FROM [AdventureWorks2014].[Person].[Person]

在这里您可以看到 FirstName 列具有相同的值:

BusinessEntityID PersonType NameStyle Title FirstName MiddleName LastName
13353 IN 0 NULL Erik M Griffin
13354 IN 0 NULL Erik NULL Diaz
13355 IN 0 NULL Erik J Xu
13356 IN 0 NULL Erik NULL Sun
13357 IN 0 NULL Erik NULL Zhu
13358 IN 0 NULL Erik R Gao
13359 IN 0 NULL Erik NULL Hayes
13360 IN 0 NULL Erik NULL Ma
13361 IN 0 NULL Erik G Price
13362 IN 0 NULL Erik M Liang

我做错了什么?

这是 UPDATE 语句的正确语法:

UPDATE t1
SET t1.FirstName = t2.FirstName
FROM TCE_Shuffled t1 JOIN TCE_Shuffled t2 
ON t1.ORIG_ROWNUM = t2.NEW_ROWNUM;