Предположим, у меня есть таблица MySQL с именем MyTable, которая выглядит следующим образом:
+----+------+-------+
| Id | Type | Value |
+----+------+-------+
| 0 | A | 1 |
| 0 | B | 1 |
| 1 | A | 2 |
| 1 | B | 3 |
| 2 | A | 5 |
| 2 | B | 8 |
+----+------+-------+
И для каждого Id
я хочу вставить новую строку с типом 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
в MyTable
?
Есть ли относительно простой способ сделать это с помощью запроса, или мне нужно написать хранимую процедуру? И если последнее, руководство будет полезным, так как я не слишком хорошо разбираюсь в них.