Bagaimana untuk Membetulkan Ralat 'Jadual Ditentukan Dua Kali' dalam Pertanyaan KEMASKINI MySQL?

Susan Sarandon
Lepaskan: 2024-11-12 06:46:01
asal
880 orang telah melayarinya

How to Fix

Jadual Ditentukan Dua Kali: Menyelesaikan Konflik Kemas Kini dalam MySQL

Apabila cuba mengemas kini jadual yang muncul sebagai kedua-dua sasaran untuk kemas kini dan berasingan sumber data, MySQL mungkin menimbulkan ralat "Jadual 'table_name' ditentukan dua kali, kedua-duanya sebagai sasaran untuk 'KEMASKINI' dan sebagai sumber berasingan untuk data." Isu ini timbul apabila anda merujuk jadual yang sama beberapa kali dalam pertanyaan anda.

Secara khusus, mesej ralat ini menunjukkan bahawa jadual pengurus sedang digunakan sebagai jadual sasaran untuk operasi KEMASKINI dan sebagai sumber data untuk memilih data daripada jadual branch_master. Rujukan berganda ini boleh mengelirukan MySQL.

Penyelesaian

Penyelesaian adalah untuk mengasingkan jadual dalam sumber data anda ke dalam jadual terbitan, iaitu jadual sementara yang dibuat pada terbang untuk menyimpan data dari jadual asal. Dengan melakukan ini, anda boleh mengelakkan kekaburan dalam pertanyaan anda.

Ganti baris berikut dalam pertanyaan anda:

FROM manager AS m2
Salin selepas log masuk

dengan:

FROM (select * from manager) AS m2
Salin selepas log masuk

Ini akan mewujudkan jadual terbitan dipanggil m2 yang mengandungi semua data daripada jadual pengurus asal.

Dikemas kini Pertanyaan

Berikut ialah pertanyaan yang dikemas kini yang akan menyelesaikan ralat konflik jadual:

UPDATE manager
SET status = 'Y'
WHERE branch_id IN
(
  select branch_id
  FROM (select * from manager) AS m2
  WHERE (branch_id, year) IN
  (
    SELECT branch_id, year
    FROM branch_master
    WHERE type = 'finance'
  )
);
Salin selepas log masuk

Dengan menggunakan jadual terbitan, anda boleh memastikan bahawa jadual pengurus dirujuk sekali sahaja dalam pertanyaan anda, menghalang MySQL daripada menghadapi ralat "Table specified twice".

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Jadual Ditentukan Dua Kali' dalam Pertanyaan KEMASKINI MySQL?. 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