Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat MySQL 1093: 'Anda tidak boleh menentukan jadual 'table_name' untuk kemas kini dalam klausa FROM'?

Bagaimana untuk Menyelesaikan Ralat MySQL 1093: 'Anda tidak boleh menentukan jadual 'table_name' untuk kemas kini dalam klausa FROM'?

Patricia Arquette
Lepaskan: 2024-12-24 15:12:15
asal
624 orang telah melayarinya

How to Solve MySQL Error 1093:

Ralat MySQL 1093: Memahami dan Mengatasi Sekatan

Dalam MySQL, cuba mengubah suai jadual yang turut dirujuk dalam klausa FROM bagi pertanyaan yang sama boleh mengakibatkan ralat: "Anda tidak boleh menentukan jadual sasaran 'nama_jadual' untuk kemas kini dalam FROM fasal." Sekatan ini timbul daripada ketidakupayaan MySQL untuk melaksanakan operasi sedemikian secara langsung.

Untuk menyelesaikan isu ini, beberapa pendekatan boleh dipertimbangkan:

Menyertai Jadual dengan Sendiri

Satu pilihan adalah untuk menggabungkan jadual dengan dirinya sendiri dengan kriteria pemilihan yang sesuai, mewujudkan dua contoh jadual yang berbeza dari perspektif MySQL. Ini membolehkan operasi yang merosakkan dilakukan pada satu kejadian sementara membiarkan yang lain tidak disentuh.

Syarikat Subkueri dalam Klausa FROM

Penyelesaian alternatif melibatkan penentuan subkueri yang menjana sasaran baris untuk pemadaman dalam klausa FROM yang lebih mendalam. Ini mencipta jadual sementara tersirat daripada subquery, yang MySQL mengiktiraf sebagai entiti yang berasingan daripada jadual sasaran. Walau bagaimanapun, pendekatan ini mungkin memberi kesan kepada prestasi.

Melumpuhkan Pengoptimuman Pengoptimum (MySQL 5.7.6 dan lebih baru)

Bermula dengan MySQL 5.7.6, pengoptimum boleh mengoptimumkan subquery dalam klausa FROM, menyebabkan ralat berterusan. Untuk mengatasinya, lumpuhkan pengoptimuman menggunakan pembolehubah optimizer_switch:

SET optimizer_switch = 'derived_merge=off';
Salin selepas log masuk

Perhatikan bahawa ini disyorkan sebagai penyelesaian jangka pendek atau untuk tugas kecil sekali sahaja, kerana ia mungkin memberi kesan negatif terhadap prestasi pertanyaan keseluruhan.

Kesimpulan

Ralat "Anda tidak boleh menentukan jadual sasaran 'table_name' untuk kemas kini dalam klausa FROM" berpunca daripada had MySQL dalam mengubah suai jadual yang juga digunakan dalam klausa FROM. Dengan menggunakan kaedah yang digariskan di atas, pembangun boleh mengatasi sekatan ini dan melaksanakan operasi yang diingini pada data mereka.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1093: 'Anda tidak boleh menentukan jadual 'table_name' 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