我需要一个更新查询来将空值设置为同一组中的另一个值
例如
Table
filed1 filed2 filed3
1 e 1/1/2009
1 e null
1 e 1/1/2009
2 f 2/2/2009
2 f 2/2/2009
2 f null
3 g 3/3/2009
3 g null
预期结果
filed1 filed2 filed3
1 e 1/1/2009
1 e 1/1/2009
1 e 1/1/2009
2 f 2/2/2009
2 f 2/2/2009
2 f 2/2/2009
3 g 3/3/2009
3 g 3/3/2009
答案 0 :(得分:1)
您使用的是哪个数据库服务器?在Oracle中,这可能有效,假设filed3对于组中的每一行都是相等的,或者为null:
EMPI@XE > select * from sov; FILED1 F FILED3 1 e 1 e 1/1/2009 1 e 1/1/2009 2 g 1/2/2009 2 g 1/2/2009 2 g EMPI@XE > update sov s 2 set 3 s.filed3 = 4 (select filed3 5 from sov so 6 where so.filed1 = s.filed1 7 and so.filed2 = s.filed2 8 and so.filed3 is not null 9 and rownum = 1) 10 where filed3 is null; EMPI@XE > select * from sov; FILED1 F FILED3 1 e 1/1/2009 1 e 1/1/2009 1 e 1/1/2009 2 g 1/2/2009 2 g 1/2/2009 2 g 1/2/2009
答案 1 :(得分:0)
-- note table1 is your table
UPDATE t1 set t1.filed3 = t2.filed3
from table1 t1, table1 t2
where t1.filed3 is null
and t2.filed3 is not null
and t1.filed2 = t2.filed2 and
t1.filed1 = t2.filed1