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

PostgreSQL如何根据ID条件更新指定列 CASE语法错误如何解决

错误原因

你编写的SQL不符合PostgreSQL的UPDATE语法规则:SET子句中每个赋值项必须为列名 = 值的结构,CASE表达式只能用来生成值,不能直接用来选择要更新的列,也不能在CASE内部写赋值语句,因此触发语法报错。

正确实现代码

你可以对每个需要更新的数值列单独写CASE判断,符合条件时执行+1操作,不符合时保留原值即可:

UPDATE my_table
SET
    my_date = now(),
    id_1_number = CASE WHEN _id = id_1 THEN id_1_number + 1 ELSE id_1_number END,
    id_2_number = CASE WHEN _id = id_2 THEN id_2_number + 1 ELSE id_2_number END
WHERE user_id = _user_id;
逻辑说明
  • 上述语句只会更新匹配user_id = _user_id的行
  • 匹配到_id等于id_1时,仅id_1_number加1,id_2_number保持原值不变
  • 匹配到_id等于id_2时,仅id_2_number加1,id_1_number保持原值不变
  • PostgreSQL会自动优化无变化的列赋值,不会产生额外的写入开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:48:04