【发布时间】:2018-07-17 10:11:56
【问题描述】:
我创建了如下表A:
我使用简单的 INSERT INTO 和 SELECT 语句输入了上面的数据。现在源数据已更正,我想使用 INSERT INTO, SELECT, ON DUPLICATE KEY UPDATE,但是当我运行代码时,0 的 和 您在上面看到的 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)
;
所以我正在寻找的答案是:
- 我希望 TABLEA 对 SELECT 查询中的每个 UNIQUE 都有一行。
- 如果 TABLEA 包含与 SELECT 相同的 UNIQUEID,那么我希望它更新 YEAR、MONTH >、COSTCENTRE、AMOUNT 来自 SELECT 查询
【问题讨论】:
-
我认为应该是
ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR)- 即您应该只引用 TABLEA 的列名 -
嗨伊沃。太棒了……它奏效了。
-
太棒了。我会将评论转换为答案,以便您接受它
标签: mysql mariadb on-duplicate-key