mysql - 如何对重复键上列的值求和?

标签 mysql sql sum on-duplicate-key

我有一个这样的表:

// mytable
+----+--------+-------+-------+
| id |  name  |  key  | value |
+----+--------+-------+-------+
| 1  | jack   | 1     | 10    |
| 2  | peter  | 1     | 5     |
| 3  | jack   | 2     | 5     |
| 4  | ali    | 1     | 2     |
| 5  | jack   | 1     | 5     |
| 6  | jack   | 1     | 10    |
| 7  | bert   | 4     | 2     |
| 8  | peter  | 2     | 10    |
| 9  | bert   | 4     | 5     |
+----+--------+-------+-------+  

现在我想对 value 的数量求和,其中 namekey 相同。所以,我想要这个输出:

// mynewtable
+----+--------+-------+-------+
| id |  name  |  key  | value |
+----+--------+-------+-------+
| 1  | jack   | 1     | 25    |
| 2  | peter  | 1     | 5     |
| 3  | jack   | 2     | 5     |
| 4  | ali    | 1     | 2     |
| 7  | bert   | 4     | 7     |
| 8  | peter  | 2     | 10    |
+----+--------+-------+-------+ 

我可以这样做吗?


编辑:我如何为 insert 做那件事?

// mytable
+----+--------+-------+-------+
| id |  name  |  key  | value |
+----+--------+-------+-------+
| 1  | jack   | 1     | 25    |
| 2  | peter  | 1     | 5     |
| 3  | jack   | 2     | 5     |
| 4  | ali    | 1     | 2     |
| 7  | bert   | 4     | 7     |
| 8  | peter  | 2     | 10    |
+----+--------+-------+-------+ 

插入这些行:

    +----+--------+-------+-------+ 
    | 10 | jack   | 1     | 5     |
    +----+--------+-------+-------+ 
    +----+--------+-------+-------+ 
    | 11 | bert   | 1     | 2     |
    +----+--------+-------+-------+

我想要的:(输出)

// mynewtable
+----+--------+-------+-------+
| id |  name  |  key  | value |
+----+--------+-------+-------+
| 1  | jack   | 1     | 30    |
| 2  | peter  | 1     | 5     |
| 3  | jack   | 2     | 5     |
| 4  | ali    | 1     | 2     |
| 7  | bert   | 4     | 7     |
| 8  | peter  | 2     | 10    |
| 11 | bert   | 1     | 2     |
+----+--------+-------+-------+ 

最佳答案

您必须按更多列进行分组。

select name, key, sum(value) from mytable group by name, key;

关于mysql - 如何对重复键上列的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955643/

相关文章:

sql - PostgreSQL 需要生成 TOTAL ROW

MYSQL:需要帮助快速增长表和降低速度(4mio 行)

mysql - 检索每个组中的最后一条记录 - MySQL

sql - Laravel 外键 onDelete ('cascade' ) 不起作用

mysql - 使用 NOT IN 语句的 PHP 选择查询

mysql sum group by month and date 使用契约(Contract)开始和结束日期

MySQL查询根据按月分组的激活日期统计累计用户数

php - 学说 dql 没有返回 MySQL 所期望的结果

mysql - 在Mysql中使用sql count multiple columns yes and no

php - 如何在 PHP 中使用 MySQL 事务?