求和多行

use*_*047 6 mysql sql

所以我有一个这样的表:

id    mod    n1    n2    n3
1     1      1     1
1     2            2
1     3                  3
2     1      1
2     2            2
3     1      1
Run Code Online (Sandbox Code Playgroud)

我想将特定id的所有行的每个值总结为列调用总数,但我不想将id组合在一起,因为它们具有不同的mod编号.我想要一个这样的结果:

id    mod   total
1     1     7
1     2     7
1     3     7
2     1     3
2     2     3
3     1     1
Run Code Online (Sandbox Code Playgroud)

我不能使用group by,因为它会给我每个行的总数.我如何实现我想要的结果?

rae*_*kid 7

你可以这样做:

SELECT `table`.`id`, `mod`, mySum
FROM `table` 
JOIN (SELECT `id`, SUM(n1) + SUM(n2) + SUM(n3) AS mySum
        FROM `table` GROUP BY `id`) as grpTable
ON `table`.`id` = `grpTable`.`id`
Run Code Online (Sandbox Code Playgroud)

不确定这个的性能虽然......