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 INTO 和 SELECT 语句将数据放入上面。现在源数据已更正,我想使用 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)
;
所以我正在寻找的答案是:
- 我希望 TABLEA 为 SELECT[ 中的每个 UNIQUE 设置一行=43=] 查询.
- 如果 TABLEA 包含与 SELECT 相同的 UNIQUEID,那么我希望它更新 YEAR, MONTH, COSTCENTRE, AMOUNT 从 SELECT查询
将我的评论转换为答案。
我认为它应该是 ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR)
- 即你应该只引用 TABLEA 的列名
我创建了 table A 如下:
我使用简单的 INSERT INTO 和 SELECT 语句将数据放入上面。现在源数据已更正,我想使用 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)
;
所以我正在寻找的答案是:
- 我希望 TABLEA 为 SELECT[ 中的每个 UNIQUE 设置一行=43=] 查询.
- 如果 TABLEA 包含与 SELECT 相同的 UNIQUEID,那么我希望它更新 YEAR, MONTH, COSTCENTRE, AMOUNT 从 SELECT查询
将我的评论转换为答案。
我认为它应该是 ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR)
- 即你应该只引用 TABLEA 的列名