在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
答案 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
这里有很多选择......