我创建了如下表a:
我使用简单的insert-into和select语句输入上面的数据。既然源数据已经更正,我想在重复密钥更新时使用insert-into、select,但是当我运行代码时,上面看到的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,那么我希望它更新select查询中的年、月、成本中心和金额
1条答案
按热度按时间oxalkeyp1#
把我的评论变成了答案。
我认为应该是这样
ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR)
-也就是说,你应该只参考表A的列名