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中文網其他相關文章!