更新字段 - SQL Server

时间:2016-03-08 01:16:27

标签: sql sql-server

在SQL Server中,我尝试使用表中的现有值更新表中的空字段。

示例:

表有4列:A,B,C,D

A     B     C     D
1     2     3     4
5     Null  Null  4

如何使用B,C中的值填充Null值,其中D = 4

Update Table
Set B=B
Where B is null
and D=4

1 个答案:

答案 0 :(得分:1)

一种选择是使用self join

update t
set t.b = t2.b
from yourtable t
    join yourtable t2 on t.d = t2.d 
                    and t2.b is not null
where t.b is null

如果b存在多个记录,其中b不为空,那么该怎么办?这可能搞砸了。相反,您必须决定使用哪个值。以下是选择min

的示例
update t
set t.b = t2.b
from yourtable t
    join (select d, min(b) b 
          from yourtable
          where b is not null
          group by d) t2 on t.d = t2.d 
where t.b is null

或者使用相关子查询:

update yourtable t
set b = (select min(b) from yourtable t2 where t.id = t2.id)
where t.b is null

这里有很多选择......