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
中的資料更新 name
的 desc
和 Table 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中文網其他相關文章!