簡體   English   中英

根據同一表的其他字段更新字段

[英]Update field based on other fields of the same table

我有一張桌子Datawarehouse ,那里的人口出現問題了。 每行都有一個name和一個ID ,對於原始系統中的每次更新,都會在DWH表中創建一個新行,該行應保持受影響對象的相同IDName

由於某種原因,會為同一對象生成重復的IDs (相同的名稱,知道名稱也是唯一的對象明智的而不是表明智的,與ID相同,它不是表主鍵,它只是對象ID)。

知道我具有以下字段: IDNameIsLatest ,我現在需要修復數據。 為此,我需要使用的偽代碼是:

 1. Select the list of rows with the same Name
 2. Select the ID where IsLatest = 1
 3. Update the rest of rows with that ID

更新查詢出現問題,我無法僅選擇一個ID ,也無法循環使用其他名稱。

可以使用相關子查詢完成此操作:

UPDATE DWH
SET id = (
    SELECT id
    FROM DataWarehouse
    WHERE DWH.name = name
        AND isLatest = 1
    )
FROM DataWarehouse DWH

選擇最新到臨時表並將其用於更新。

UPDATE YourTable
SET YourTable.ID = LatestTable.ID
FROM 
(
    SELECT * FROM YourTable 
    WHERE IsLatest = 1
) AS LatestTable
WHERE YourTable.[Name] = LatestTable.[Name]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM