sqlserver数据库 当a字段一致时,b字段部分有值(值相同)部分为空,如何把空的填上,求问谢谢!

各路大侠好,问题是这样的,一个sqlserver表table里有包括a字段,b字段。

a字段的值是人名,比如小红、小明等,b字段的值是对应的存款钱数。a、b字段的类型都是nvarchar
a字段值相同的可能有好几条,比如
a字段的值都是小红,而对应的b字段的值有一些是100,有一些是空值(null)
当a字段是小明时,b字段全部是null,
a字段的值都是小兰,而对应的b字段的值有一些是300,有一些是空值(null)
如下图

a b
小红 100
小红 null
小红 null
小红 null
小红 100
小红 null
小明 null
小明 null
小兰 300
小兰 null

想做的就是,把小红对应的b全部改成100,小兰对应的b全部改成300,即去掉空值。小明改不了,因为全是null,还是保留

这样的sql语句怎么写,求问,实在想不出来,谢谢

第1个回答  2015-12-01
update table set b=case when a='小红' then '100' when a='小兰' then '300' end
where a in('小红','小兰')
第2个回答  2015-12-01
update tb t1
inner join (select a,max(b) from tb group by a where is not null) t2 on t1.a=t2.a
set t1.b=t2.b
where t1.b is null

理论上是酱紫的。测试的时候注意备份数据!追问

求问tb,t1,t2分别代表什么呢,谢谢

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网