首頁 > 資料庫 > mysql教程 > 如何使用另一個表中的值更新 Oracle 表的資料?

如何使用另一個表中的值更新 Oracle 表的資料?

Susan Sarandon
發布: 2025-01-22 02:52:13
原創
866 人瀏覽過

How Can I Update an Oracle Table's Data Using Values from Another Table?

Oracle SQL:使用另一個表中的值更新表資料

資料庫管理經常需要使用來自另一個表的值來更新一個表的資料。 讓我們用兩個範例表來說明這一點:

表 1:

<code>id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf</code>
登入後複製

表 2:

<code>id    name    desc
-----------------------
1     x       123
2     y       345</code>
登入後複製

我們的目標是使用 Table 1 中的資料更新 namedescTable 2 列,與 id 欄位相符。期望的結果:

表 1(更新):

<code>id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf</code>
登入後複製

Oracle SQL 為此種相關更新提供了有效的方法:

方法一:關聯子查詢

此方法在 UPDATE 語句中使用相關子查詢:

<code class="language-sql">UPDATE table1 t1
   SET (name, desc) = (SELECT t2.name, t2.desc
                         FROM table2 t2
                        WHERE t1.id = t2.id)
 WHERE EXISTS (
    SELECT 1
      FROM table2 t2
     WHERE t1.id = t2.id );</code>
登入後複製

此查詢更新 Table 1 中的每一行,其中 id 中存在符合的 Table 2

方法 2:使用通用表表達式 (CTE)

或者,如果連接創建了一個保留鍵的視圖,CTE 提供了一個更乾淨的解決方案:

<code class="language-sql">UPDATE (SELECT t1.id, 
               t1.name name1,
               t1.desc desc1,
               t2.name name2,
               t2.desc desc2
          FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id)
   SET name1 = name2,
       desc1 = desc2;</code>
登入後複製

此方法建構一個臨時視圖(使用 CTE),組合兩個表中的相關字段,然後對此視圖執行更新。

兩種方法都可以根據 Table 1 中的資料有效更新 Table 2,展示了 Oracle SQL 中資料操作的靈活技術。

以上是如何使用另一個表中的值更新 Oracle 表的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板