Rumah > pangkalan data > tutorial mysql > Mengapa Saya Mendapat Ralat 'Jadual Ditentukan Dua Kali' dalam Pertanyaan KEMASKINI MySQL?

Mengapa Saya Mendapat Ralat 'Jadual Ditentukan Dua Kali' dalam Pertanyaan KEMASKINI MySQL?

Mary-Kate Olsen
Lepaskan: 2024-11-23 08:03:32
asal
578 orang telah melayarinya

Why Do I Get

Ralat: "Jadual ditentukan dua kali, kedua-duanya sebagai sasaran untuk 'KEMASKINI' dan sebagai sumber berasingan untuk data"

Apabila melaksanakan pertanyaan MySQL yang melibatkan pengemaskinian jadual dan merujuknya sebagai sumber data dalam pertanyaan yang sama, anda mungkin menghadapi ralat "Jadual ditentukan dua kali." Ralat ini berlaku apabila jadual yang sama adalah kedua-dua sasaran pernyataan KEMASKINI dan muncul sebagai jadual berasingan dalam subkueri yang digunakan untuk menentukan kriteria kemas kini.

Untuk menyelesaikan ralat ini dan berjaya mengemas kini jadual yang dikehendaki, ikuti ini langkah:

  1. Ekstrak subkueri: Kenal pasti subkueri dalam pernyataan KEMASKINI yang menyebabkan isu. Dalam contoh yang disediakan, subkueri ialah:
SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN (...)
Salin selepas log masuk
  1. Buat jadual terbitan: Cipta jadual terbitan dengan membungkus subkueri dalam pernyataan SELECT lain dan tetapkan alias kepadanya. Ini akan membolehkan anda merujuk subkueri tanpa menyatakan jadual pengurus secara eksplisit dua kali.
SELECT * FROM (SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN (...)) AS subquery
Salin selepas log masuk
  1. Gunakan jadual terbitan: Gantikan subkueri asal dengan jadual terbitan dalam kenyataan KEMASKINI.
UPDATE manager
SET status = 'Y'
WHERE branch_id IN (
    SELECT branch_id
    FROM subquery
);
Salin selepas log masuk

Dengan menggunakan jadual terbitan, anda elakkan daripada menentukan jadual pengurus sebagai sasaran dan sumber data, menyelesaikan ralat "Jadual dinyatakan dua kali". Teknik ini memastikan bahawa subkueri hanya dirujuk sekali dan membenarkan kenyataan KEMASKINI untuk dilaksanakan dengan jayanya.

Atas ialah kandungan terperinci Mengapa Saya Mendapat 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