作者:儒志楼 | 来源:互联网 | 2024-12-28 12:51
本文介绍了如何使用PostgreSQL的`UPDATE...FROM`语法,通过映射表实现对多行记录进行高效的批量更新。这种方法不仅适用于单列更新,还支持多列的同时更新。
在 PostgreSQL 中,可以使用 UPDATE ... FROM
语法结合子查询来实现对多行记录的批量更新。这种方法特别适合需要根据某些条件同时更新多个字段的情况。
例如,如果您需要更新表 test
中的 column_a
列,可以通过以下 SQL 语句实现:
UPDATE test AS t SET
column_a = c.column_a
FROM (VALUES
('123', 1),
('345', 2)
) AS c(column_b, column_a)
WHERE c.column_b = t.column_b;
如果您需要同时更新多个列,比如 column_a
和 column_c
,可以在 SET
子句中指定多个赋值表达式:
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;
通过这种方式,您可以灵活地添加任意数量的列,并确保所有相关记录都能被正确更新。此外,使用 VALUES
子查询可以简化数据源的定义,使 SQL 语句更加简洁和易读。