Rumah > pangkalan data > tutorial mysql > Bagaimana Saya Boleh Menyelesaikan Ralat MySQL 1093: Tidak Dapat Menentukan Jadual Sasaran untuk Kemas Kini dalam Klausa FROM?

Bagaimana Saya Boleh Menyelesaikan Ralat MySQL 1093: Tidak Dapat Menentukan Jadual Sasaran untuk Kemas Kini dalam Klausa FROM?

Mary-Kate Olsen
Lepaskan: 2024-12-17 10:59:26
asal
660 orang telah melayarinya

How Can I Resolve MySQL Error 1093: Can't Specify Target Table for Update in FROM Clause?

Ralat MySQL 1093: Memahami Sekatan pada Kemas Kini Jadual dalam Klausa FROM

Ralat MySQL "Anda tidak boleh menentukan jadual sasaran 'table_name ' untuk kemas kini dalam klausa FROM" timbul apabila cuba mengubah suai jadual dari dalam pernyataan SELECTnya sendiri. Sekatan ini berpunca daripada ketidakupayaan MySQL untuk mengemas kini dan merujuk jadual secara serentak dalam operasi yang sama.

Mengatasi Ralat

Untuk mengatasi isu ini, pertimbangkan pendekatan berikut:

  • Menyertai Meja untuk Itu sendiri:
    Susun semula pertanyaan untuk melakukan sambung sendiri pada jadual, mencipta jadual sementara. Ini membenarkan kemas kini pada jadual asal:
UPDATE story_category a
INNER JOIN story_category b ON a.category_id = b.category_id
SET a.category_id = ...
Salin selepas log masuk
  • Menyarang Subkueri Dengan Lebih Dalam:
    Menyusun subkueri yang mengenal pasti entri yang rosak dalam subkueri lain, mewujudkan sementara yang tersirat jadual:
UPDATE story_category
SET category_id = (
  SELECT id
  FROM (
    SELECT id
    FROM category
    EXCEPT
    SELECT DISTINCT category_id
    FROM story_category
  ) AS x
)
Salin selepas log masuk
  • Melumpuhkan Pengoptimum Pertanyaan:
    Untuk MySQL versi 5.7.6 dan seterusnya, pengoptimum mungkin cuba mengalih keluar subquery. Untuk mengelakkan ini, lumpuhkan optimizer_switch:
SET optimizer_switch = 'derived_merge=off';
Salin selepas log masuk

Nota: Melumpuhkan pengoptimum pertanyaan bukanlah penyelesaian jangka panjang yang disyorkan dan hanya boleh digunakan sebagai pembetulan sementara. Pertimbangkan pendekatan alternatif untuk penyelenggaraan pangkalan data yang lebih cekap.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menyelesaikan Ralat MySQL 1093: Tidak Dapat Menentukan Jadual Sasaran untuk Kemas Kini dalam Klausa FROM?. 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