Rumah >pangkalan data >tutorial mysql >Bagaimana cara membuat pertanyaan kemas kini dengan betul dengan gabungan dalam di Oracle?

Bagaimana cara membuat pertanyaan kemas kini dengan betul dengan gabungan dalam di Oracle?

Susan Sarandon
Susan Sarandonasal
2025-01-25 04:50:09278semak imbas

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

Di Oracle, gunakan gabungan dalaman untuk melaksanakan pertanyaan kemas kini dengan betul

Pertanyaan berikut di MySQL dapat dilaksanakan dengan jayanya:

Walau bagaimanapun, pertanyaan yang sama di Oracle akan menyebabkan kesilapan berikut:

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

penyelesaian

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

Sintaks yang digunakan dalam pertanyaan tidak sah di Oracle. Untuk memenuhi keputusan yang diharapkan, anda boleh menggunakan salah satu kaedah berikut: Kaedah pertama

Kaedah ini menggunakan sub -query untuk mendapatkan nilai kemas kini Table1.Value mengikut syarat sambungan. Ia memastikan bahawa hanya garis sepadan dikemas kini. kaedah kedua

<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>

Kaedah ini menggunakan gambarajah hubungan dalaman yang dikemas kini untuk melaksanakan kemas kini. Ia memerlukan Oracle untuk berfikir bahawa pandangan hubungan dalaman dikemas kini, bergantung kepada peraturan tertentu.

Atas ialah kandungan terperinci Bagaimana cara membuat pertanyaan kemas kini dengan betul dengan gabungan dalam di Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn