首頁 > 資料庫 > mysql教程 > 如何在單一 PostgreSQL 查詢中高效更新多行?

如何在單一 PostgreSQL 查詢中高效更新多行?

Linda Hamilton
發布: 2025-01-12 22:37:47
原創
850 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板