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;
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
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!