从同一个表中的1行更新多行中的多个列

时间:2012-08-21 17:05:02

标签: sql ibm-midrange

我们有一个包含多个字段的表,例如300+。结构是这样的: storenum,Monval1,Monval2 ... Monval45,Monval46 ... Tuesval1,Tuesval2等等。基本上对于值1到53,每周的每一天都有一个版本,所以53个字段* 7天加上一些其他随机字段。

我需要使用商店1中的数据更新商店3到285。我尝试过:

Update (Select MonVal1... SunVal53 from table1 
 where storenum in (3, 4,...284,285)) as Dest
From (Select MonVal1... SunVal53 from table1 
 where storenum =1) as Source

但它是一个nogo。

我可以做什么甚至完成?

2 个答案:

答案 0 :(得分:0)

您可以编写此模式的超长更新语句:

UPDATE badly_normalized_table
SET monval1 =   ( SELECT monval1 FROM badly_normalized_table WHERE ... )
WHERE pk = the_pk_you_want_to_upate

答案 1 :(得分:0)

Update table1 set
    MonVal1    = origin.MonVal1, 
    /* the orher fields here */
    SunVal53   = origin.SunVal53
from table1
inner join table1 as origin on origin.storenum = 1
where table1.storenum in (3, 4,...284,285)