【发布时间】:2009-03-17 11:26:08
【问题描述】:
我的桌子:
ID 名称 COST PAR P_val S_val 1×5 0 1 0 1 年 5 0 2 0 1 z 5 0 0 5 2 XY 4 0 4 4我需要用SUM(S_val) 更新PAR 字段,按ID 分组:
- 对于 ID 1
PAR应该是SUM(SVAL) WHERE ID=1 - 对于 ID 2
PAR应该是SUM(SVAL) WHERE ID=2
预期输出:
ID 名称 COST PAR P_val S_val 1×5 5 1 0 1 年 5 5 2 0 1 z 5 5 0 5 2 XY 4 4 4 4我怎样才能UPDATEPAR 值?
我的代码:
UPDATE Table_Name SET PAR = (SELECT SUM(S_val) FROM Table_Name WHERE ID=1)
FROM Table_Name
这不起作用。
【问题讨论】:
-
虽然已经回答了这个问题,但您要求的是一种低效的做事方式,存在大量数据重复。由于您是按 ID 聚合数据,因此如果您创建第二个以
ID作为其主键的表,然后将总和存储在该表中,则数据重复会减少。然后,您可以在必要时在连接中检索总和。由于每当更新原始表中的任何条目时您都必须重新计算数据,因此您将只更新每个 ID 的 1 个条目,而不是很多。这种方法也不易出错。