Rumah > Artikel > pangkalan data > Mengapa MySQL Melemparkan Ralat "Jadual Ditentukan Dua Kali" Semasa Mengemas kini Jadual Menggunakan Subquery?
MySQL Ralat: Jadual Ditentukan Dua Kali dalam KEMASKINI dan Sumber
Apabila cuba mengemas kini jadual pengurus menggunakan pertanyaan SQL yang disediakan, MySQL menghadapi ralat: "Jadual 'm1' ditentukan dua kali, kedua-duanya sebagai sasaran untuk 'KEMASKINI' dan sebagai sumber berasingan untuk data." Ralat ini berlaku kerana pengurus jadual dirujuk dua kali dalam subkueri.
Isu ini boleh diselesaikan dengan mengubah suai subkueri untuk memilih daripada jadual terbitan. Daripada menggunakan alias m2 secara langsung, pertanyaan harus mencipta jadual sementara menggunakan pernyataan SELECT, dan kemudian pilih daripada jadual sementara itu. Pertanyaan yang diubah suai di bawah mencapai ini:
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' ) );
Dengan menggunakan jadual terbitan, MySQL boleh membezakan dengan betul antara jadual pengurus yang digunakan dalam kenyataan KEMASKINI dan jadual pengurus yang dirujuk dalam subkueri. Ini menghapuskan kekeliruan yang membawa kepada mesej ralat.
Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat "Jadual Ditentukan Dua Kali" Semasa Mengemas kini Jadual Menggunakan Subquery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!