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

PostgreSQL:更新jsonb类型内部数组中TL员工薪资的SQL语句

批量更新JSONB数组中指定职位员工的薪资

针对需求,这里提供适用于PostgreSQL的SQL语句(因使用jsonb类型),可批量将employee_data字段内employees数组中职位为TL的员工薪资统一更新为20000:

UPDATE your_table_name
SET employee_data = jsonb_set(
    employee_data,
    '{employees}',
    (
        SELECT jsonb_agg(
            CASE WHEN emp->>'desig' = 'TL' THEN emp || '{"sal": 20000}'::jsonb ELSE emp END
        )
        FROM jsonb_array_elements(employee_data->'employees') AS emp
    )
)
WHERE employee_data @> '{"employees": [{"desig": "TL"}]}';

语句说明:

  • 拆分与处理元素:用jsonb_array_elements将employees数组拆分为单个JSON对象,通过CASE判断对象的desig是否为TL,匹配时用||合并新薪资值,不匹配则保留原对象。
  • 重新聚合数组:通过jsonb_agg将处理后的单个对象重新组合为完整的employees数组。
  • 替换原字段:用jsonb_set把原employee_data中的employees数组替换为处理后的新数组。
  • 过滤目标记录:WHERE子句仅筛选包含TL职位员工的记录,避免无效更新。

注意:请将语句中的your_table_name替换为你的实际表名。

内容的提问来源于stack exchange,提问作者sreekesh.s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:33