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
相关产品推荐
相关产品推荐

