假设我有一个名为 MyTable 的 MySQL 表,它看起来像这样:
+----+------+-------+
| Id | Type | Value |
+----+------+-------+
| 0 | A | 1 |
| 0 | B | 1 |
| 1 | A | 2 |
| 1 | B | 3 |
| 2 | A | 5 |
| 2 | B | 8 |
+----+------+-------+
而且,对于每个Id
,我想插入一个新行,C
其类型是相同行的类型和值Value
的总和。该表的主键是,因此不存在 Id,Type 对重复的问题。A
B
Id
(Id, Type)
我可以用这个查询创建我想要的行:
SELECT MyTable_A.Id AS Id, 'C' AS Type, (A_Val + B_Val) AS Value FROM
(SELECT Id, Value AS A_Val FROM MyTable WHERE Type='A') AS MyTable_A
JOIN (SELECT Id, Value AS B_Val FROM MyTable WHERE Type='B') AS MyTable_B
ON MyTable_A.Id = MyTable_B.Id
给予:
+----+------+-------+
| Id | Type | Value |
+----+------+-------+
| 0 | C | 2 |
| 1 | C | 5 |
| 2 | C | 13 |
+----+------+-------+
但问题是:如何使用此结果将生成的类型C
行插入到中MyTable
?
有没有一种相对简单的方法可以通过查询来做到这一点,还是我需要编写一个存储过程?如果是后者,指导会有所帮助,因为我不太精通它们。