我有一张表Datawarehouse
,人口出错了。每行都有一个name
和一个ID
,对于原始系统中的每次更新,都会在DWH
表中创建一个新行,该行应保持相同的ID
和{ {1}}受影响的对象。
由于某种原因,为同一个Object生成了重复Name
(同名,知道名称也是唯一的对象明智而不是表格,与ID相同,它不是表主键,它是只是一个对象ID)。
知道我有以下字段:IDs
,ID
,Name
,我现在需要做的是修复数据。为此,我需要使用的伪代码是:
IsLatest
我遇到了更新查询的问题,我无法只选择一个 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
,而且我也无法循环使用不同的名称。
答案 0 :(得分:3)
这可以使用相关的子查询来完成:
UPDATE DWH
SET id = (
SELECT id
FROM DataWarehouse
WHERE DWH.name = name
AND isLatest = 1
)
FROM DataWarehouse DWH
答案 1 :(得分:1)
选择最新的临时表格&用它来更新。
UPDATE YourTable
SET YourTable.ID = LatestTable.ID
FROM
(
SELECT * FROM YourTable
WHERE IsLatest = 1
) AS LatestTable
WHERE YourTable.[Name] = LatestTable.[Name]