You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB中INSERT...ON DUPLICATE KEY语句语法错误求助

修正MariaDB INSERT语句语法错误的方案

错误原因很明确:MariaDB的INSERT ... VALUES语法不支持AS NEW别名,这个别名仅能在INSERT ... SELECT的写法里使用。下面提供两种可行的修改方案:

方案一:使用VALUES()函数(推荐,更简洁)

直接去掉AS NEW,用VALUES(列名)来引用要插入的新值:

INSERT INTO price_2 (date_1,ticker,end_price,volume)
VALUES
('2021-01-02', '000001', 1340, 1000),
('2021-01-03', '000001', 1315, 2000),
('2021-01-02', '000002', 500, 200),
('2021-01-03', '000002', 1380, 3000)
ON DUPLICATE KEY UPDATE
end_price = VALUES(end_price), 
volume = VALUES(volume);

方案二:改用INSERT ... SELECT语法(保留别名写法)

把原有的VALUES列表转换成SELECT UNION ALL的形式,这样就能使用AS NEW别名:

INSERT INTO price_2 (date_1,ticker,end_price,volume)
SELECT * FROM (
    SELECT '2021-01-02' AS date_1, '000001' AS ticker, 1340 AS end_price, 1000 AS volume
    UNION ALL
    SELECT '2021-01-03', '000001', 1315, 2000
    UNION ALL
    SELECT '2021-01-02', '000002', 500, 200
    UNION ALL
    SELECT '2021-01-03', '000002', 1380, 3000
) AS NEW
ON DUPLICATE KEY UPDATE
end_price = NEW.end_price, 
volume = NEW.volume;

注意:确保price_2表已经定义了唯一键(比如date_1和ticker的联合唯一键),否则ON DUPLICATE KEY UPDATE不会生效。

内容的提问来源于stack exchange,提问作者JM S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:52:38