Rumah > pangkalan data > tutorial mysql > Mengapa Oracle Saya MENGEMASKINI Pertanyaan dengan JOIN Hang, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Oracle Saya MENGEMASKINI Pertanyaan dengan JOIN Hang, dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Lepaskan: 2024-12-31 15:30:11
asal
723 orang telah melayarinya

Why Does My Oracle UPDATE Query with a JOIN Hang, and How Can I Fix It?

Menyelesaikan Masalah Pertanyaan Kemas Kini Tidak Tentu dengan Sertai dalam Oracle

Apabila melaksanakan pertanyaan KEMASKINI berikut:

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL);
Salin selepas log masuk

pengguna mungkin menghadapi ralat pelaksanaan yang tidak pasti. Artikel ini menyelidiki isu ini dan menyediakan penyelesaian.

Masalah: Hasil Subkueri Bukan Unik

Punca ralat terletak pada subkueri dalam KEMASKINI kenyataan. Melainkan subquery mengembalikan satu baris untuk setiap baris dalam jadual1, operasi kemas kini akan gagal. SERTAI KIRI dalam subkueri membenarkan berbilang baris yang sepadan, yang berpotensi membawa kepada kemas kini bukan penentu.

Penyelesaian: Memastikan Subkueri Satu Baris Kembali

Untuk menyelesaikan masalah isu, syarat diperlukan untuk mengaitkan baris dalam jadual1 dengan baris dalam subkueri, memastikan subkueri mengembalikan satu baris. Ini boleh dicapai dengan menambah syarat cantum yang sepadan dengan baris dengan kunci unik:

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL
    AND t1.some_key = t2.some_key);
Salin selepas log masuk

Skop Penanganan Kemas Kini

Pertimbangan lain ialah hakikat bahawa Kenyataan UPDATE boleh menjejaskan semua baris dalam jadual1. Adalah penting untuk menilai sama ada ini adalah tingkah laku yang dimaksudkan atau jika kemas kini yang lebih terpilih diperlukan. Dengan memasukkan syarat WHERE tambahan dalam pernyataan UPDATE, pengguna boleh mengehadkan skop kemas kini kepada baris tertentu, seperti yang diperlukan.

Atas ialah kandungan terperinci Mengapa Oracle Saya MENGEMASKINI Pertanyaan dengan JOIN Hang, dan Bagaimana Saya Boleh Membetulkannya?. 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