我正在嘗試通過資料洗牌對資料庫中的單個列進行匿名化。
我創建了這個查詢,但是當我運行它時,它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具有相同的值:
| 商業物體ID | 人物型別 | 名稱樣式 | 標題 | 名 | 中間名字 | 姓 |
|---|---|---|---|---|---|---|
| 13353 | 在 | 0 | 空值 | 埃里克 | 米 | 格里芬 |
| 13354 | 在 | 0 | 空值 | 埃里克 | 空值 | 迪亞茲 |
| 13355 | 在 | 0 | 空值 | 埃里克 | J | 許 |
| 13356 | 在 | 0 | 空值 | 埃里克 | 空值 | 太陽 |
| 13357 | 在 | 0 | 空值 | 埃里克 | 空值 | 朱 |
| 13358 | 在 | 0 | 空值 | 埃里克 | 電阻 | 高 |
| 13359 | 在 | 0 | 空值 | 埃里克 | 空值 | 海耶斯 |
| 13360 | 在 | 0 | 空值 | 埃里克 | 空值 | 嘛 |
| 13361 | 在 | 0 | 空值 | 埃里克 | G | 價錢 |
| 13362 | 在 | 0 | 空值 | 埃里克 | 米 | 梁 |
我究竟做錯了什么?
uj5u.com熱心網友回復:
這是該UPDATE陳述句的正確語法:
UPDATE t1
SET t1.FirstName = t2.FirstName
FROM TCE_Shuffled t1 JOIN TCE_Shuffled t2
ON t1.ORIG_ROWNUM = t2.NEW_ROWNUM;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374193.html
標籤:sql-server 查询语句 加入 sql更新 公用表表达式
上一篇:在運行時從表中選擇特定欄位
下一篇:選擇的存盤程序邏輯
