sql - 如何根据条件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
有没有办法根据条件更新特定列的值?
解决方案
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;
推荐阅读
- node.js - Node Express 上传带有附加数据的文件
- python - mariadb-devel 在使用 yum 时无法在 Cent OS 7 上运行
- javascript - 引用对象属性的最佳方式
- grpc - grpc-go 如何处理取消示例
- java - 在 javadoc 中禁用名称前缀
- javascript - 为什么我的函数从我的数据库返回一个承诺而不是一个对象?
- javascript - 找不到带有特殊字符的网页
- c# - 为 C# 和 Java 散列 SHA-256
- python - 使用python正则表达式在字符串中搜索长度为6或更多的特定重复(mnr)
- wso2is - 无法在 SCIM 2.0 API(WSO2 IS 5.7.0)中按 displayName 过滤组,例如 '?fitler=displayname eq APPLICATION/myRole'