Selesaikan ralat sintaks dengan bijak apabila subquery MySQL memadamkan baris
Ralat sintaks mungkin berlaku apabila menggunakan subkueri sebagai syarat untuk memadamkan baris dalam MySQL. Ralat ini biasanya berlaku apabila jadual sasaran operasi padam (di sini term_hierarchy
) juga dirujuk dalam subkueri.
Untuk menyelesaikan masalah ini, pendekatan alternatif diperlukan. Pertanyaan berikut menyediakan penyelesaian yang cekap:
<code class="language-sql">DELETE th.* FROM term_hierarchy AS th WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM (SELECT tid FROM term_hierarchy WHERE parent = 1015) AS th1 INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid) WHERE th2.parent != 1015 );</code>
Dalam pertanyaan ini, subkueri yang digunakan untuk mengenal pasti nilai tid
yang hendak dipadamkan dibalut dengan subkueri tambahan (di sini dinamakan th1
). Ini membolehkan MySQL mengelak daripada menggunakan jadual DELETE
dalam kedua-dua klausa WHERE IN
dan term_hierarchy
, sekali gus menyelesaikan ralat sintaks.
Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris dalam MySQL Menggunakan Subkueri Tanpa Ralat Sintaks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!