Rumah > pangkalan data > tutorial mysql > Bagaimana Mengemas kini Nilai Oracle Dengan Cekap Menggunakan Joins?

Bagaimana Mengemas kini Nilai Oracle Dengan Cekap Menggunakan Joins?

DDD
Lepaskan: 2024-12-24 14:03:10
asal
732 orang telah melayarinya

How to Efficiently Update Oracle Values Using Joins?

Mengemas kini Nilai Oracle dengan Join

Mengemas kini jadual menggunakan cantuman kadangkala boleh membawa kepada kerumitan. Satu contoh di mana pengguna menghadapi pengecualian adalah apabila cuba mengemas kini jumlah menggunakan penyertaan. Contohnya:

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

Melaksanakan pertanyaan ini boleh mengakibatkan ralat: "Arahan SQL tidak ditamatkan dengan betul."

Penyelesaian Menggunakan Pernyataan Gabungan

Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan pernyataan gabungan:

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 gabungan membenarkan kemas kini yang lebih ringkas dan cekap dengan menggabungkan penyata sisipan, kemas kini dan padam ke dalam satu operasi.

Atas ialah kandungan terperinci Bagaimana Mengemas kini Nilai Oracle Dengan Cekap Menggunakan Joins?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan