【发布时间】:2020-08-17 04:42:56
【问题描述】:
我有一个 MYSQL 存储过程,用于合并暂存表和 MST 表之间的数据。
CREATE PROCEDURE `LDA_MERGE_TRACTOR_EQUPIMENT`()
BEGIN
INSERT IGNORE
INTO Appian.LDA_CETARIS_TRACTOR_EQUIPMENT_MST(
`Asset #`,
`Fleet Code`,
`Description`,
`Asset Category`,
`Asset Type`,
`Asset Item`
)
SELECT
`Asset #`,
`Faleet Code`,
`Description`,
`Asset Category`,
`Asset Type`,
`Asset Item`
FROM
Appian.LDA_CETARIS_TRACTOR_EQUIPMENT_STAGING stg
ORDER BY
`Asset #`
ON DUPLICATE KEY
UPDATE
`Fleet Code` = stg.`Fleet Code`,
`Description` = stg.`Description`,
`Asset Category`= stg.`Asset Category`,
`Asset Type` = stg.`Asset Type`,
`Asset Item` = stg.`Asset Item`;
END
Asset #,是两个表的主键。但我收到错误消息:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 29
Line 29: `Asset Item` = stg.`Asset Item`;
谁能帮帮我?谢谢!
【问题讨论】:
-
使用 VALUES() 函数,如
Fleet Code = VALUES(Fleet Code)- 即使用未检测到重复时应插入的值进行更新。