首页 > 数据库 > mysql教程 > 如何在单个 PostgreSQL 查询中高效更新多行?

如何在单个 PostgreSQL 查询中高效更新多行?

Linda Hamilton
发布: 2025-01-12 22:37:47
原创
849 人浏览过

How Can I Efficiently Update Multiple Rows in a Single PostgreSQL Query?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板