MySQL中使用GROUP_CONCAT结合UPDATE语句报错求修正
修正后的GROUP_CONCAT UPDATE语句
错误分析
- 错误语句1:子查询缺少
FROM子句,多表直接关联UPDATE未做有效过滤,且子查询的GROUP BY可能返回多行,导致赋值时出现"单行子查询返回多行"的报错。 - 错误语句2:不符合MySQL的UPDATE语法规范,子查询未正确关联表,也未指定与主表的关联条件,无法完成预期更新逻辑。
正确语句
UPDATE titlement_values e JOIN ( SELECT e2.title_value, GROUP_CONCAT(DISTINCT o.minvalue) AS min_val FROM firstEntry f JOIN objects o ON f.ldkey = o.ld_key JOIN titlement_values e2 ON o.TITLE_VALUEKEY = e2.TITLE_VALUEKEY WHERE f.ldkey = 13 AND e2.TITLEMENTTYPEKEY = 13 AND e2.TITLE_VALUE LIKE 'ZD%' GROUP BY e2.title_value ) AS agg ON e.title_value = agg.title_value SET e.customattribute12 = agg.min_val;
逻辑说明
- 子查询
agg通过三表关联筛选出符合条件的记录,按title_value分组后,计算每个分组的minvalue去重拼接结果。 - 主表
titlement_values与子查询通过title_value字段关联,将聚合得到的拼接值批量更新到对应的customattribute12字段,完全匹配你需要的对应关系。
内容的提问来源于stack exchange,提问作者Kev888
相关产品推荐
相关产品推荐

