根据同一个表的其他字段更新字段

时间:2012-10-01 10:11:41

标签: sql sql-server data-warehouse

我有一张表Datawarehouse,人口出错了。每行都有一个name和一个ID,对于原始系统中的每次更新,都会在DWH表中创建一个新行,该行应保持相同的ID和{ {1}}受影响的对象。

由于某种原因,为同一个Object生成了重复Name(同名,知道名称也是唯一的对象明智而不是表格,与ID相同,它不是表主键,它是只是一个对象ID)。

知道我有以下字段:IDsIDName,我现在需要做的是修复数据。为此,我需要使用的伪代码是:

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 ,而且我也无法循环使用不同的名称。

2 个答案:

答案 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]