使用INSERT SELECT带SUM聚合插入数据时MariaDB报错,求排查
语法错误排查与修正
错误原因:
- 多余的
VALUES关键字:使用INSERT INTO ... SELECT语法插入查询结果时,不需要添加VALUES,直接衔接SELECT语句即可,额外的VALUES会破坏语法结构,导致解析错误。 - 字段后的冗余逗号:
SUM(o.product_qty)末尾多了一个逗号,数据库解析时会误认为还有后续字段,进而触发语法报错。
修正后的SQL语句:
INSERT INTO OrderProductStock (product_id, shop_id, product_qty) SELECT o.product_id, o.shop_id, SUM(o.product_qty) FROM OrderProduct o LEFT JOIN MOrder m ON o.order_id=m.order_id LEFT JOIN Product p ON o.product_id=p.product_id WHERE m.order_status!=6 AND (m.is_online=0 OR (m.is_online=1 AND m.order_status=4)) AND o.shop_id=1 AND o.product_id=973 AND o.create_date < '2021-06-30 23:59:59'
额外提示:查询中使用了SUM()聚合函数,但未添加GROUP BY子句。如果o.product_id和o.shop_id是唯一组合(对应单条插入记录),当前语句可正常执行;若需按这两个字段分组求和,建议补充GROUP BY o.product_id, o.shop_id,避免因数据库模式差异引发其他问题。
内容的提问来源于stack exchange,提问作者Egven
相关产品推荐
相关产品推荐

