Rumah  >  Artikel  >  pangkalan data  >  Mengapa MySQL Melemparkan Ralat "Jadual Ditentukan Dua Kali" Semasa Mengemas kini Jadual Menggunakan Subquery?

Mengapa MySQL Melemparkan Ralat "Jadual Ditentukan Dua Kali" Semasa Mengemas kini Jadual Menggunakan Subquery?

Susan Sarandon
Susan Sarandonasal
2024-11-15 02:40:02435semak imbas

Why Does MySQL Throw

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!

Kenyataan:
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