Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengemas kini Jadual Oracle dengan betul menggunakan Joins dan Elakkan Ralat ORA-00933?

Bagaimana untuk Mengemas kini Jadual Oracle dengan betul menggunakan Joins dan Elakkan Ralat ORA-00933?

Barbara Streisand
Barbara Streisandasal
2024-12-29 00:13:11400semak imbas

How to Correctly Update Oracle Tables Using Joins and Avoid ORA-00933 Errors?

Mengemas kini Jadual Oracle menggunakan Joins

Objektifnya adalah untuk mengemas kini jadual menggunakan gabungan dan menghadapi ralat "ORA-00933: Perintah SQL tidak diakhiri dengan betul."

Ini berlaku kerana pertanyaan yang diberikan tidak betul dari segi sintaksis. Logik pertanyaan adalah untuk mengira jumlah daripada berbilang jadual yang dicantumkan oleh lajur biasa dan mengemas kini jadual asal dengan jumlah yang dikira.

Untuk menyelesaikan isu ini, kami mengesyorkan menggunakan pernyataan MERGE, yang menyediakan cara yang lebih jelas. untuk mengemas kini data berdasarkan syarat. Sintaks MERGE sejajar dengan peraturan perniagaan dengan lebih cekap.

Berikut ialah pertanyaan yang disemak menggunakan pernyataan 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;

Pernyataan MERGE ini:

  • Melaksanakan sambung jadual untuk mengira jumlah bagi setiap baris yang sepadan.
  • Menggunakan HIDUP klausa untuk memadankan baris berdasarkan lajur id.
  • Mengemas kini baris yang dipadankan dalam jadual1 dengan menambahkan jumlah yang dikira pada lajur total_adjusted_cost sedia ada.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Jadual Oracle dengan betul menggunakan Joins dan Elakkan Ralat ORA-00933?. 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