大家请帮忙看看有没有好的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 ..... )
大家发表一下意见吧?万分感谢。
现在有一个表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 建函数问题
- 求高手:什么情况下会发生隐式commit和隐式rollback
- 用pl/sql将excel数据导入到oracle中的问题。
- sql 语句问题?
- 关于TYPE IS TABLE OF 的问题。高手请教。
- 高分求JOB问题
- 关于oracle与磁盘i/o的困惑,请高手解答。
- 在9i的SQL文中怎么获得当天日期呢?getdate?!谢谢
- 才鸟的问题
- 请问ibatis里用了isPropertyAvailable判断。Mybatis中有什么好的替代方案吗?
- 为什么会报“无效字符”的错??????哪里错了!!!谢谢啊……
- 问下oracle 9i 的客户端和 oracle 10g 的客户端是一样的吗?(急)
SET (amount, amount2) = (SELECT SUM (amount), sum (amount2)
FROM mytable b
WHERE b.parentid = a.ID)
WHERE a.parentid = '0'
UPDATE yangwj_test a
SET (a3,b3)=(SELECT SUM(a1+a2),SUM(b1+b2)
FROM yangwj_test b
WHERE b.Id=a.Id)