Rumah > pangkalan data > tutorial mysql > Bagaimana untuk membetulkan kesilapan ORA-00933 dalam pertanyaan kemas kini Oracle dengan gabungan dalaman?

Bagaimana untuk membetulkan kesilapan ORA-00933 dalam pertanyaan kemas kini Oracle dengan gabungan dalaman?

Susan Sarandon
Lepaskan: 2025-01-25 04:54:39
asal
613 orang telah melayarinya

How to Correct ORA-00933 Errors in Oracle UPDATE Queries with Inner Joins?

Menyelesaikan masalah ORA-00933 Ralat dalam Pertanyaan KEMASKINI Oracle dengan INNER JOIN

Ralat ORA-00933 dalam Oracle selalunya timbul daripada perbezaan sintaks antara Oracle SQL dan sistem pangkalan data lain seperti MySQL, terutamanya apabila menggunakan pernyataan UPDATE dengan INNER JOINs. Artikel ini menangani isu biasa yang dihadapi semasa mengalihkan pertanyaan sedemikian ke Oracle.

Sintaks MySQL standard untuk mengemas kini jadual melalui gabungan dalaman tidak serasi secara langsung dengan Oracle. Berikut ialah dua pendekatan Oracle yang sah:

Kaedah 1: Menggunakan Subkueri dengan EXISTS

Kaedah ini memanfaatkan subkueri untuk mengemas kini table1 berdasarkan nilai padanan dalam table2, memastikan bahawa hanya baris yang memenuhi kriteria yang ditetapkan dikemas kini.

<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>
Salin selepas log masuk

Klausa EXISTS menghalang ralat jika tiada baris yang sepadan wujud dalam table2.

Kaedah 2: Menggunakan Paparan Sebaris Boleh Kemas Kini

Jika peraturan kebolehkemaskinian Oracle berpuas hati (seperti yang diperincikan dalam dokumentasi rasmi Oracle), anda boleh menggunakan paparan dalam talian 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>
Salin selepas log masuk

Pendekatan ini mencipta pandangan sementara (t) yang membolehkan kemas kini yang lebih ringkas. Ingat untuk menyemak dokumentasi Oracle pada paparan dalam talian boleh dikemas kini untuk mengesahkan keserasian.

Perbezaan utama terletak pada keperluan sintaks Oracle yang lebih ketat. Menamatkan pernyataan SQL dengan titik bertitik (;) dengan betul adalah penting. Memahami peraturan Oracle untuk paparan dalam talian boleh dikemas kini adalah penting untuk kemas kini berbilang baris yang berjaya. Dengan menggunakan kaedah alternatif ini, anda boleh melaksanakan UPDATE pertanyaan dengan INNER JOIN dalam Oracle dengan berkesan dan mengelakkan ralat ORA-00933.

Atas ialah kandungan terperinci Bagaimana untuk membetulkan kesilapan ORA-00933 dalam pertanyaan kemas kini Oracle dengan gabungan dalaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan