如何用MySQL的JSON函数或其他方式对JSON数组元素逐个加1?
MySQL JSON数组元素批量加1的实现方法
可以借助MySQL 8.0及以上版本提供的JSON_TABLE与JSON_ARRAYAGG函数组合实现该需求,具体操作如下:
SELECT t.id, JSON_ARRAYAGG(ja.age + 1) AS max_ages FROM t1 t JOIN JSON_TABLE( t.max_ages, '$[*]' COLUMNS (age INT PATH '$') ) ja GROUP BY t.id;
逻辑说明:
JSON_TABLE函数将max_ages列的JSON数组拆分为临时结果集,每个数组元素对应一行的age字段- 对拆分后的每个
age值执行+1运算 - 通过
JSON_ARRAYAGG函数按id分组,将处理后的数值重新聚合为JSON数组,得到预期输出
如果使用的是MySQL 5.x版本(不支持JSON_TABLE),可以通过自定义函数或递归CTE实现,但步骤相对繁琐,建议升级到MySQL 8.0及以上版本使用上述更简洁的方案。
内容的提问来源于stack exchange,提问作者hejdav
相关产品推荐
相关产品推荐

