日期:2014-05-17  浏览次数:20744 次

求一条SQL用于更新多列。
大家请帮忙看看有没有好的update方法?
现在有一个表myTable,内容如下:
------------------------------
ID             ParentID           Amount
==============================
A               C                     100
B               C                     50
C               0                       Nil
D               F                     20
E               F                     30
F               0                       Nil
------------------------------

我想把   ID=A,B   的两条数据的Amount值根据它们的   ParentID   加总到   ID=C   的Nil处,同样,ID=D,E   加总到   ID=F   的Nil处。

只有一列Amount的情况下,用下面这条SQL可以解决这个问题:
update   myTable   parentTbl
set   parentTbl.Amount   =   (select   sum(subTbl.amount)
                                                from   myTable   subTbl
                                                where   subTbl.ParentID   =   parentTbl.ID)
where   parentTbl.ID   in   ( 'C ',   'F ')

但如果myTable表有多个Amount列(> 5),如Amount1,Amount2,Amount3....那应该怎么办呢?
因为我想如果像这样继续添加set条件:
update   myTable   parentTbl
set   parentTbl.Amount1   =   (子查询)
,   parentTbl.Amount2   =   (子查询)
,   parentTbl.Amount3   =   (子查询)
.........
where   ....
这样肯定会影响性能的。。。请问大家有没有更好的办法实现这种效果啊?
比如有没有类似下面这种语句的?
update   myTable
set   (Amount1,Amount2,Amount3....)   =   (   select   sum(amount1)
                                                                                      ,   sum(amount2)       )
                                                                                      ,   sum(amount3)   .....
                                                                              from   .....                   )
大家发表一下意见吧?万分感谢。

------解决方案--------------------
刚刚试了一下,在我的oracle 10g上,还真的可以这样用