首頁 > 資料庫 > mysql教程 > 如何使用聯結正確更新 Oracle 表並避免 ORA-00933 錯誤?

如何使用聯結正確更新 Oracle 表並避免 ORA-00933 錯誤?

Barbara Streisand
發布: 2024-12-29 00:13:11
原創
401 人瀏覽過

How to Correctly Update Oracle Tables Using Joins and Avoid ORA-00933 Errors?

使用聯接更新Oracle 表

目標是使用聯接更新表並遇到錯誤「ORA-00933: SQL 指令未正確結束。 ”

出現這種情況是因為提供的查詢在語法上不正確。查詢邏輯是計算由公共列連接的多個表的總計,並用計算出的總計更新原始表。

要解決此問題,我們建議使用 MERGE 語句,它提供了更明確的方式根據條件更新資料。 MERGE 語法更有效地與業務規則保持一致。

這是使用 MERGE 語句的修改後的查詢:

MERGE INTO table1 tab1 
USING
(
  SELECT tab3.name, tab3."add", SUM(tab2.amount) AS total
  FROM table2 tab2,
    table3 tab3 ,
    table4 tab4
  WHERE tab2.id        = tab3.id
  AND tab3.id            = tab4.id
  AND tab4.indicator             ='Y'
  GROUP BY tab3.name,
    tab3."add"
) t1
ON (tab1.id      = t1.id)
WHEN MATCHED THEN
  UPDATE SET tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total;
登入後複製

此 MERGE 語句:

  • 執行表連接計算每個符合行的總和。
  • 使用 ON 子句來符合行基於 id 欄位。
  • 透過將計算出的總計新增至現有的 Total_adjusted_cost 欄位來更新 table1 中的符合行。

以上是如何使用聯結正確更新 Oracle 表並避免 ORA-00933 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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