maraidb/mysql从selectquery插入到表中,但在重复键上使用selectquery中的数据

5us2dqdw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(357)

我创建了如下表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查询中的年、月、成本中心和金额

oxalkeyp

oxalkeyp1#

把我的评论变成了答案。
我认为应该是这样 ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR) -也就是说,你应该只参考表A的列名

相关问题