Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Pertanyaan KEMASKINI Oracle dengan JOIN Yang Berjalan Tanpa Had?

Bagaimana untuk Membetulkan Pertanyaan KEMASKINI Oracle dengan JOIN Yang Berjalan Tanpa Had?

Patricia Arquette
Lepaskan: 2024-12-24 12:34:29
asal
1013 orang telah melayarinya

How to Fix an Oracle UPDATE Query with JOIN That Runs Indefinitely?

Pertanyaan Kemas Kini Oracle dengan Sertai

Pertimbangkan pertanyaan kemas kini Oracle 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

Isu:

Pertanyaan dilaksanakan selama-lamanya disebabkan oleh keadaan hilang yang akan memastikan subquery mengembalikan satu baris untuk setiap baris yang dikemas kini dalam t1.

Penyelesaian:

Untuk menyelesaikan isu, syarat mesti ditambahkan pada subquery untuk mengaitkan baris dalam t1 dengan baris dalam subquery. Sebagai contoh, keadaan berikut boleh digunakan:

AND t1.some_key = t2.some_key
Salin selepas log masuk

Pertanyaan dikemas kini yang terhasil akan kelihatan seperti ini:

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

Pertimbangan Tambahan:

  • Pengubahsuaian di atas memastikan bahawa subkueri mengembalikan satu baris untuk setiap baris t1 yang memenuhi penambahan syarat.
  • Jika ia tidak bertujuan untuk mengemas kini setiap baris dalam t1, klausa WHERE tambahan boleh ditambah pada pernyataan KEMASKINI utama untuk menentukan baris yang akan dikemas kini.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Pertanyaan KEMASKINI Oracle dengan JOIN Yang Berjalan Tanpa Had?. 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