首页 > 解决方案 > 如何根据条件pgsql更新特定的列名

问题描述

我想根据 id 更新特定列的值。

这就是我正在尝试的

update my_table
    set my_date=now(),
        case _id
            when _id = id_1 then id_1_number = id_1_number + 1
            when _id = id_2 then id_2_number= id_2_number + 1
         where user_id = _user_id;

但这显示

ERROR:  syntax error at or near "case"
LINE 36:      case _id
              ^
SQL state: 42601
Character: 950

有没有办法根据条件更新特定列的值?

标签: sqlpostgresqlsql-update

解决方案


CASE 表达式不能包含赋值,您需要使用表达式的结果来赋值。每列都需要一个

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;

推荐阅读