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

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

Barbara Streisand
Lepaskan: 2024-12-17 06:12:24
asal
358 orang telah melayarinya

How to Resolve MySQL Error 1093:

Mengatasi Ralat MySQL 1093: "Tidak Dapat Menentukan Jadual Sasaran untuk Kemas Kini dalam Klausa FROM"

Apabila menghadapi Ralat MySQL 1093, adalah penting untuk memahami isu yang mendasari. Ralat ini berlaku apabila cuba mengubah suai jadual yang turut dirujuk dalam klausa FROM pertanyaan.

Punca Punca

MySQL tidak membenarkan jadual diubah suai secara serentak dan digunakan dalam klausa FROM bagi pernyataan KEMASKINI atau PADAM. Sekatan ini disebabkan oleh kekaburan yang akan timbul daripada mengakses jadual yang sama untuk kedua-dua operasi.

Penyelesaian 1: Menggunakan Subkueri

Satu penyelesaian adalah dengan membenamkan SELECT kenyataan yang mengenal pasti entri yang rosak sebagai subkueri dalam klausa FROM bagi KEMASKINI atau PADAM pernyataan:

UPDATE story_category SET category_id = NULL
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
Salin selepas log masuk

Penyelesaian 2: Menyertai Sendiri Meja

Sebagai alternatif, anda boleh menyertai sendiri jadual untuk mencipta alias berasingan untuk jadual yang sama, membenarkan anda untuk mengubah suai salah satu alias sambil merujuk yang lain. Contohnya:

UPDATE story_category AS updated
INNER JOIN story_category AS original
    ON updated.category_id = original.category_id
SET updated.category_id = NULL
WHERE original.category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
Salin selepas log masuk

Mengelakkan Berulang

Setelah entri rasuah telah dipadamkan, pertimbangkan untuk melaksanakan kekangan pada jadual story_category untuk mengelakkan entri tidak sah pada masa hadapan:

ALTER TABLE story_category
ADD FOREIGN KEY (category_id) REFERENCES category(id);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk 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