Lösen Sie den Syntaxfehler geschickt, wenn die MySQL-Unterabfrage Zeilen löscht
Bei der Verwendung einer Unterabfrage als Bedingung zum Löschen von Zeilen in MySQL kann ein Syntaxfehler auftreten. Dieser Fehler tritt normalerweise auf, wenn die Zieltabelle des Löschvorgangs (hier term_hierarchy
) auch in der Unterabfrage referenziert wird.
Um dieses Problem zu lösen, ist ein alternativer Ansatz erforderlich. Die folgende Abfrage bietet eine effiziente Problemumgehung:
<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>
In dieser Abfrage wird die Unterabfrage, die zur Identifizierung der zu löschenden tid
-Werte verwendet wird, in eine zusätzliche Unterabfrage (hier th1
genannt) eingeschlossen. Dadurch kann MySQL die Verwendung der DELETE
-Tabelle sowohl in der WHERE IN
- als auch in der term_hierarchy
-Klausel vermeiden und so den Syntaxfehler beheben.
Das obige ist der detaillierte Inhalt vonWie lösche ich Zeilen in MySQL mithilfe einer Unterabfrage ohne Syntaxfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!