MariaDB / MySQL Insert Into Table From Select Query But On Duplicate key Use Data from Select Query

MaraiDB / MySQL Insert Into Table From Select Query But On Duplicate Key Use Data From Select Query

我创建了 table A 如下:

我使用简单的 INSERT INTOSELECT 语句将数据放入上面。现在源数据已更正,我想使用 INSERT INTO, SELECT, ON DUPLICATE KEY UPDATE,但是当我 运行 代码时,[您在上面看到的 =26=]0's 和 NULL 不会更新为新值。

这是我的代码

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)
;

所以我正在寻找的答案是:

  1. 我希望 TABLEASELECT[ 中的每个 UNIQUE 设置一行=43=] 查询.
  2. 如果 TABLEA 包含与 SELECT 相同的 UNIQUEID,那么我希望它更新 YEAR, MONTH, COSTCENTRE, AMOUNT 从 SELECT查询

将我的评论转换为答案。

我认为它应该是 ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR) - 即你应该只引用 TABLEA 的列名