Я создал таблицу A следующим образом:
Я ввел данные выше, используя простой оператор ВСТАВИТЬ В и ВЫБРАТЬ. Теперь, когда исходные данные исправлены, я хочу использовать INSERT INTO, SELECT, ON DUPLICATE KEY UPDATE, но когда я запускаю код, 0-е и НОЛЬ, которые вы видите выше, не обновляются до нового значения.
Вот мой код
INSERT INTO
TABLEA (uniqueid, year, month, costcentre, amount)
SELECT
SS.uniquekey, SS.year, SS.month, SS.source, SS.totalamount
FROM
(SELECT
uniquekey, `YEAR`, `MONTH`, SOURCE, totalamount
FROM
TABLEB
UNION ALL
SELECT
uniquekey, `YEAR`, `MONTH`, SOURCE, totalamount
FROM
TABLEC
) as SS
ON DUPLICATE KEY
UPDATE
TABLEA.YEAR = VALUES(SS.year),
TABLEA.MONTH = VALUES(SS.month),
TABLEA.COSTCENTRE = VALUES(SS.SOURCE),
TABLEA.AMOUNT = VALUES(SS.TOTALAMOUNT)
;
Итак, ответ, который я ищу, таков:






Превратил мой комментарий в ответ.
Я считаю, что это должен быть ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR) - т.е. вы должны ссылаться только на имена столбцов TABLEA