- 爱易网页
-
Oracle教程
- 求一条SQL用于更新多列。解决方案
日期: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上,还真的可以这样用