次のような MyTable という MySQL テーブルがあるとします。
+----+------+-------+
| Id | Type | Value |
+----+------+-------+
| 0 | A | 1 |
| 0 | B | 1 |
| 1 | A | 2 |
| 1 | B | 3 |
| 2 | A | 5 |
| 2 | B | 8 |
+----+------+-------+
そして、それぞれに対して、同じの行のタイプと値の合計であるタイプのId
新しい行を挿入したいと思います。このテーブルの主キーはであるため、Id,Type ペアの重複は問題ありません。C
Value
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
しかし問題は、この結果を使用して、生成された type- row をに挿入するにはどうすればよいかということMyTable
です。
クエリでこれを行う比較的簡単な方法はありますか、それともストアド プロシージャを記述する必要がありますか? 後者の場合、私はあまり詳しくないので、ガイダンスが役に立ちます。