[英]How to use sum of values in SQL joins in same table
我正在尝试将数据库中的字段更新为其连接值的总和:
我有这个示例数据:
ID refer_id my_reflink s1 s2 m1 m2
-----------------------------------------------
1 a 1 7
2 a b 2 8
3 a c 3 9
4 d 4 0
5 b e 5 1
6 c f 6 2
我需要一个将这个结果提供给 s1 和 s2 的查询。
ID refer_id my_reflink s1 s2 m1 m2
----------------------------------------------------
1 a 5 17 1 7
2 a b 5 1 2 8
3 a c 0 0 3 9
4 d 4 0
5 b e 6 2 5 1
6 e f 0 0 6 2
结果是
所以对于 ID1,它将是
my_reflink
my_reflink
根据所使用的 RDBMS,更新/加入语法可能会有所不同,但以下查询适用于 MySql
UPDATE someTable t
JOIN (SELECT refer_id, SUM(m1) sum_m1, SUM(m2) sum_m2
FROM someTable
GROUP BY refer_id) s ON s.refer_id = t.my_reflink
SET s1 = COALESCE(sum_m1, 0), s2 = COALESCE(sum_m2,0)
你似乎想要join
:
select t.ID, t.refer_id, t.my_reflink, tt.m1, tt.m2,
t.m1, t.m2
from t left join
(select refer_id, sum(m1) as m1, sum(m2) as m2
from t
group by refer_id
) tt
on t.my_reflink = tt.refer_id;
如果要实际更改数据(而不是返回结果集),则update
语法取决于您使用的数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.