Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengemas kini Lajur Jadual dengan betul menggunakan JOIN dalam Oracle SQL?

Bagaimana untuk Mengemas kini Lajur Jadual dengan betul menggunakan JOIN dalam Oracle SQL?

Susan Sarandon
Lepaskan: 2024-12-22 13:48:10
asal
330 orang telah melayarinya

How to Correctly Update a Table Column Using a JOIN in Oracle SQL?

Pertanyaan Kemas Kini Oracle menggunakan JOIN

Dalam percubaan untuk mengemas kini lajur menggunakan operasi JOIN, pengecualian ditemui: ORA-00933: Perintah SQL tidak ditamatkan dengan betul. Pertanyaan berikut menggambarkan isu:

UPDATE tab1
   SET tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total
 FROM table1 tab1, 
      (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
WHERE tab1.id = t1.id;
Salin selepas log masuk

Penyelesaian

Untuk menyelesaikan ralat, pertanyaan harus menggunakan pernyataan MERGE dan bukannya KEMASKINI dengan subkueri. Pernyataan MERGE membenarkan kedua-dua kemas kini dan operasi sisipan dalam satu kenyataan. Pertanyaan yang diperbetulkan menggunakan MERGE ialah:

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

Pernyataan MERGE ini menilai baris daripada jadual1 dan subkueri t1 pada tab syarat bergabung1.id = t1.id. Apabila padanan ditemui, ia mengemas kini lajur total_adjusted_cost dalam jadual1 dengan menambah jumlah nilai daripada subquery.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Lajur Jadual dengan betul menggunakan JOIN dalam Oracle SQL?. 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