ホームページ >データベース >mysql チュートリアル >結合を使用して Oracle テーブルを正しく更新し、ORA-00933 エラーを回避する方法

結合を使用して Oracle テーブルを正しく更新し、ORA-00933 エラーを回避する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 00:13:11416ブラウズ

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 を使用します。
  • 計算された合計を既存の total_adjusted_cost 列に追加することで、table1 内の一致した行を更新します。

以上が結合を使用して Oracle テーブルを正しく更新し、ORA-00933 エラーを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。