我正在尝试更新另一个表中另一个字段之和的表中的字段。
company_tbl(PRIMARY,companySize,companyName) location_tbl(PRIMARY,companyID,locationSize,locationName)
这两个表通过company_tbl.PRIMARY链接= location_tbl.companyID
update company_tbl comp, location_tbl loc
set companySize = sum(locationSize)
where comp.PRIMARY = loc.companyID
我收到“无效使用群组功能”的错误
公司可以有多个地点
我想做的是什么?我想获取属于特定公司的位置总和,并用总和更新companySize。
谢谢!
答案 0 :(得分:9)
使用:
UPDATE company_tbl comp
SET companySize = (SELECT SUM(lt.locationSize)
FROM location_tbl lt
WHERE lt.companyid = comp.primary)
... or you could use a view,包含:
SELECT c.primary,
COALESCE(SUM(lt.locationsize), 0) AS companysize
FROM company_tbl c
LEFT JOIN location_tbl lt ON lt.companyid = c.primary
答案 1 :(得分:2)
首先将companySize初始化为零:
UPDATE company_tbl SET companySize = 0;
然后,对于每个匹配的位置行,添加locationSize:
UPDATE company_tbl comp JOIN location_tbl loc ON comp.PRIMARY = loc.companyID
SET comp.companySize = comp.companySize + loc.locationSize;
您在处理每家公司的所有匹配位置时获得所需的金额。