PostgreSQL:简化多行更新
PostgreSQL 提供了同时更新多行的有效方法,这在处理大量数据集或复杂的更新条件时具有显着优势。 与传统 SQL 每行单独的 UPDATE
语句不同,PostgreSQL 提供了两种更好的替代方案:
方法 1:使用 CASE 进行条件更新
CASE
表达式可以根据特定条件为行分配不同的值。 UPDATE
语句结构为:
<code class="language-sql">UPDATE table_name SET column_name = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 ... ELSE default_value END WHERE condition;</code>
例如,要将 column_a
设置为 1(其中 column_b
为“123”)和 2(其中 column_b
为“345”):
<code class="language-sql">UPDATE table_name SET column_a = CASE WHEN column_b = '123' THEN 1 WHEN column_b = '345' THEN 2 ELSE column_a -- Retain original value if condition not met END WHERE column_b IN ('123', '345');</code>
方法 2:UPDATE...FROM 进行简洁更新
UPDATE...FROM
构造使用单独的表或子查询来定义更新值,从而产生更清晰、更易读的代码。语法是:
<code class="language-sql">UPDATE table_name SET column_names = (SELECT column_names FROM subquery) WHERE condition;</code>
将此应用于前面的示例:
<code class="language-sql">UPDATE table_name 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;</code>
与单个 UPDATE
语句相比,这些 PostgreSQL 技术显着提高了效率和代码清晰度,特别是对于大规模数据操作。
以上是如何在单个 PostgreSQL 查询中高效更新多行?的详细内容。更多信息请关注PHP中文网其他相关文章!