我需要使用postgresql更新同一个sql事务中的多行。在下面的帖子中:使用postgresql更新同一查询中的多行我看到了以下代码:
UPDATE test AS t SET
column_a = c.column_a,
column_c = c.column_c
FROM (values
(123, 1, '---'),
(345, 2, '+++')
) AS c(column_b, column_a, column_c)
WHERE c.column_b = t.column_b;
但是,这只是在更新每组值的所有列时,我没有更新。是否有人有一个解决方案来允许多个更新只使用sql(而不是plpgsql)?
2条答案
按热度按时间r6hnlfcb1#
假设您没有更新到
NULL
值,您可以使用:编辑:
如果值可以
NULL
,则需要其他列来指定是否应使用该值:k4emjkb12#
您的论点“仅当您更新每组值的所有列时”是不正确的。更新将只影响set子句中提到的那些列。由于接受null作为新值,因此只需为特定列设置一个直线:
见小提琴,特别是附加栏。