我可以CASE
用来选择在SELECT
查询(Postgres)中显示哪些列,如下所示:
SELECT CASE WHEN val = 0 THEN column_x
WHEN val = 1 THEN column_y
ELSE 0
END AS update, ...
UPDATE
在 Postgres 中执行查询(即选择应该更新哪些列)时是否有可能发生类似的事情?我假设不是,因为我找不到任何关于此的内容,但也许有人有一个聪明的选择(除了使用过程或使用更新每一列CASE
来确定是否应该为列的值分配一个新值或简单地重新分配现有的值价值)。如果没有简单的选择,我当然也会接受它作为答案。
额外信息:在我的情况下,我有 14 个可能更新的列,每个匹配行只更新一个(要更新的表在查询中与另一个表连接)。要更新的行数很可能会有所不同,可能是几十个或几百个。我相信加入条件的索引已经到位。