You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条MySQL语句批量递增JSON数组中的product_id数值

批量更新MySQL JSON数组中的所有元素值

可以用单条UPDATE语句完成这个批量操作,前提是你的MySQL版本是8.0及以上(依赖JSON_TABLE和JSON_ARRAYAGG这两个JSON处理函数)。

执行更新的语句

UPDATE your_table_name
SET product_ids = (
    SELECT JSON_ARRAYAGG(product_id + 1127)
    FROM JSON_TABLE(
        product_ids,
        '$[*]' COLUMNS(product_id INT PATH '$')
    ) AS jt
);

语句解释

  1. JSON_TABLE(product_ids, '$[*]' COLUMNS(product_id INT PATH '$')):把product_ids列的JSON数组拆分成临时表jt,每个数组元素作为一行的product_id字段。
  2. product_id + 1127:对拆分后的每个product_id执行递增1127的操作。
  3. JSON_ARRAYAGG(...):把处理后的所有product_id重新聚合成JSON数组。
  4. 外层UPDATE将原product_ids字段替换为新生成的JSON数组。

安全验证建议

在执行更新前,先运行以下查询确认结果是否符合预期:

SELECT 
    user_id,
    product_ids AS original_product_ids,
    (SELECT JSON_ARRAYAGG(product_id + 1127)
     FROM JSON_TABLE(product_ids, '$[*]' COLUMNS(product_id INT PATH '$')) AS jt) AS updated_product_ids
FROM your_table_name;

确认所有元素都正确递增后,再执行上面的UPDATE语句。

注意事项

  • 替换语句中的your_table_name为你的实际表名。
  • 如果你的MySQL版本低于8.0,由于缺少JSON_TABLE函数,无法用这种简洁的方式处理,可能需要结合字符串函数或临时表,但效率会低于8.0的方案。

内容的提问来源于stack exchange,提问作者Ravindra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 01:57:22