各路大侠好,问题是这样的,一个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('小红','小兰')
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
理论上是酱紫的。测试的时候注意备份数据!追问
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分别代表什么呢,谢谢
本回答被提问者采纳