更新具有空值的多个行

时间:2018-01-09 07:09:44

标签: sql-server

我有两列id和name的表。 Id包含空值,名称包含一些名称值。表中有重复的行。要求是使用与名称值匹配的某个值更新空值(id)。查找下表

Id      Name
---------------
1   abc
1   abc
1   abc
1   abc
NULL    abc
NULL    abc
NULL    abc
2   xyz
2   xyz
2   xyz
NULL    xyz
NULL    xyz

上面的表在id列中具有空值。我必须用Id更新Null值。例如,对于abc,我必须更新1,而xyz必须更新2。

3 个答案:

答案 0 :(得分:2)

使用自我加入

update A
    SET Id = B.id
    FROM YourTable A
        INNER JOIN YourTable B
            ON a.Name = B.Name
        WHERE A.id IS NULL
            AND b.Id IS NOT NULL

答案 1 :(得分:0)

我们假设表格的名称是' name'。 尝试执行以下查询。

update names n set n.Id = (select max(Id) from names where upper(Name) = upper(n.Name)) where n.Id is null;

答案 2 :(得分:0)

试一试:

update MY_TABLE set id = new_id from
(
  select id [new_id], name [new_name] from MY_TABLE
  where id is not null
) A
where name = new_name
相关问题