我有两张表,如:
ID | TRAFFIC
fd56756 | 4398
645effa | 567899
894fac6 | 611900
894fac6 | 567899
和
USER | ID | TRAFFIC
andrew | fd56756 | 0
peter | 645effa | 0
john | 894fac6 | 0
我需要从第一个表中获取SUM ("TRAFFIC")
并将列流量设置为第一个表ID = second
表ID的第二个表。第一张表中的ID不是唯一的,可以复制
我怎样才能做到这一点?
答案 0 :(得分:2)
以后评论中的表名。您可能会错误地报告表名和列名。
UPDATE users u
SET "TRAFFIC" = sub.sum_traffic
FROM (
SELECT "ID", sum("TRAFFIC") AS sum_traffic
FROM stats.traffic
GROUP BY 1
) sub
WHERE u."ID" = sub."ID";
除此之外:在Postgres中使用混合大小写标识符是不明智的。使用合法的小写标识符(不需要双引号)可以让您的生活更轻松。 Start by reading the manual here.
答案 1 :(得分:0)
这样的东西?
UPDATE users t2 SET t2.traffic = t1.sum_traffic FROM
(SELECT sum(t1.traffic) t1.sum_traffic FROM stats.traffic t1)
WHERE t1.id = t2.id;