MySQL如何JOIN关联两表筛选条件数据并执行INSERT插入操作
错误原因
原有SQL存在两个问题:
FROMgf_order_detail`` 后多余的分号会直接终止语句执行,后续JOIN部分会被判定为无效独立语句,触发语法报错- JOIN关联未指定两表的匹配关联条件,不符合SQL语法要求,缺失关联条件还会产生笛卡尔积,导致插入数据异常重复
正确写法
以下写法默认gf_order_detail和gf_orders通过公共字段id_order关联,若实际关联字段不同,替换ON子句中对应字段即可:
INSERT INTO `gf_compta` (ID) SELECT `gf_order_detail`.id_order FROM `gf_order_detail` INNER JOIN `gf_orders` ON `gf_order_detail`.id_order = `gf_orders`.id_order WHERE `gf_orders`.current_state = 4;
如果gf_order_detail内同一个id_order对应多条明细记录,为避免重复插入相同ID,可加去重逻辑:
INSERT INTO `gf_compta` (ID) SELECT DISTINCT `gf_order_detail`.id_order FROM `gf_order_detail` INNER JOIN `gf_orders` ON `gf_order_detail`.id_order = `gf_orders`.id_order WHERE `gf_orders`.current_state = 4;
内容的提问来源于stack exchange,提问作者Cyril-260
相关产品推荐
相关产品推荐

