pernyataan kemas kini oracle dengan gabungan dalaman: Penyelesaian masalah ORA-00933 Ralat
Melaksanakan pernyataan SQL yang menggabungkan UPDATE
di Oracle kadang-kadang boleh mengakibatkan ralat ORA-00933 ("Perintah SQL tidak berakhir dengan betul"). Kesalahan ini, sementara tidak biasa di MySQL, sering berlaku di Oracle. Pertimbangkan contoh ini, yang berfungsi dengan betul di MySQL tetapi gagal dalam Oracle: INNER JOIN
<code class="language-sql">UPDATE table1 INNER JOIN table2 ON table1.value = table2.DESC SET table1.value = table2.CODE WHERE table1.UPDATETYPE='blah';</code>
Kaedah 1: Menggunakan subquery
Pendekatan ini menggunakan subquery untuk mengemas kini: table1
<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>
memastikan bahawa hanya baris dengan penyertaan yang sepadan dalam EXISTS
dikemas kini, mencegah kesilapan. table2
Kaedah 2: Menggunakan paparan sebaris yang boleh dikemas kini
Kaedah ini menggunakan pandangan sebaris yang boleh dikemas kini:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat ORA-00933 dalam Kenyataan KEMASKINI Oracle dengan INNER JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!