打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Update语句中使用聚合函数Sum
 -转
sql update语句
UPDATE — 替换表中列/字段的数值

语法

UPDATE table SET col = expression [, ...]
     [ FROM fromlist ]
     [ WHERE condition ]

输入

table
现存表的名称.
column
table中列/字段的名.
expression
赋予列/字段的一个有效的值或表达式.
fromlist
Postgres 的一个非标准的扩展,允许别的表中的列/字段出现在 WHERE条件里.
condition
请参考 SELECT 语句获得 WHERE 子句的进一步描述.

输出

UPDATE#
成功的返回信息.#意味着更新的行数.如果 # 等于 0 则没有行被更新.

描述

UPDATE改变满足条件的所有行的声明了的列/字段的值。只有要更改的列/字段需要在语句中出现.

数组引用使用与 SELECT里一样的语法.也就是说,单个数组元素,数组元素的一个范围或者是整个数组都可以用一个查询语句更新.

要更改表,你必须对它有写权限,同样对 WHERE条件里提到的任何表也要有读权限

 
 
表warehousestorage
WarehouseIDAmount
1100
1100
1100
1100
1100
1100
1100
1100
128
10
1100
414788
4100
4100
4100
4100
4100
4100d
1100

表warehouse
WarehouseIDUsingCapacity
11028
20
30
415388
50

表warehouse中的UsingCapacity是表warehousestorage对应项的累加值

SQL语句:
update warehouse set UsingCapacity = c.amount
from (select Sum(amount) as 'amount' , warehouseid fromwarehousestorage group by warehouseid) c, warehouse
where warehouse.warehouseid = c.warehouseid


运行后,统计值正确。不过又发现一个问题,因为表warehousestorage累加后,只有2项,而表warehouse有5项
,上述代码只更新了WareHouseID=1,4的2项,其他并没有更新。
所以代码需要修改:
update warehouse set UsingCapacity = d.amount
from
(
 select wh.warehouseid, isnull(c.amount,0) as'amount' from
 (select Sum(amount) as 'amount' , warehouseidfrom warehousestorage group by warehouseid) c right join warehousewh
 on c.warehouseid = wh.warehouseid
) d,warehouse
where warehouse.warehouseid = d.warehouseid

修改后,可以正常更新其余的几项。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VFP常用命令详解
Excel工作表中的求和,除了用Sum外,还有那些技巧?
VBA多工作表相同条件不同汇总字段
DB2中的update
VFP命令、函数及程序语句大全
linux awk 一看就懂
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服