如何编写插入忽略或更新此查询?

问题描述

我有一个用于在登台表和MST表之间合并数据的MYSQL存储过程。

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`,`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`;

有人可以帮助我吗?谢谢!

解决方法

您需要按如下所示定义delimeter

DELIMITER $$
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`,`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$$
DELIMITER ;

有关更多信息,请访问this

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...