ホームページ >データベース >mysql チュートリアル >OracleにInner結合を使用して更新クエリを正しく実行する方法は?

OracleにInner結合を使用して更新クエリを正しく実行する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-25 04:50:09282ブラウズ

How to Correctly Perform an UPDATE Query with INNER JOIN in Oracle?

Oracle で INNER JOIN を使用した UPDATE クエリの正しい実行

MySQL の次のクエリは正常に実行できます:

<code class="language-sql">UPDATE table1
INNER JOIN table2 ON table1.value = table2.DESC
SET table1.value = table2.CODE
WHERE table1.UPDATETYPE='blah';</code>

ただし、Oracle で同じクエリを実行すると、次のエラーが発生します:

<code>SQL错误:ORA-00933:SQL命令未正确结束
00933. 00000 -  "SQL command not properly ended"</code>

解決策

このクエリで使用されている構文は Oracle では無効です。望ましい結果を達成するには、次のいずれかの方法を使用できます:

最初の方法

<code class="language-sql">UPDATE table1 SET table1.value = (SELECT table2.CODE
                                  FROM table2 
                                  WHERE table1.value = table2.DESC)
WHERE table1.UPDATETYPE='blah'
AND EXISTS (SELECT table2.CODE
            FROM table2 
            WHERE table1.value = table2.DESC);</code>

このメソッドはサブクエリを使用して、結合条件に基づいて table1.value の更新された値を取得します。これにより、一致する行のみが更新されることが保証されます。

2 番目の方法

<code class="language-sql">UPDATE 
(SELECT table1.value as OLD, table2.CODE as NEW
 FROM table1
 INNER JOIN table2
 ON table1.value = table2.DESC
 WHERE table1.UPDATETYPE='blah'
) t
SET t.OLD = t.NEW;</code>

このメソッドは、更新可能なインライン ビューを使用して更新を実行します。 Oracle は、特定のルールに応じてインライン ビューを更新可能とみなす必要があります。

以上がOracleにInner結合を使用して更新クエリを正しく実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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