Unterabfragebedingungen in der MySQL-DELETE-Anweisung
Wenn Sie eine Unterabfrage als Bedingung zum Löschen von Zeilen aus einer Tabelle verwenden, können Syntaxfehler auftreten. Um dieses Problem zu lösen, müssen Sie die Einschränkungen der Verwendung von Unterabfragen in DELETE-Vorgängen berücksichtigen.
In MySQL können Sie Unterabfragen nicht direkt in der WHERE-Klausel einer DELETE-Anweisung verwenden. Es gibt jedoch einen cleveren Weg, diese Einschränkung zu umgehen. Durch die Verwendung einer zusätzlichen Unterabfrage zur Einbindung der ursprünglichen Unterabfrage kann der Löschvorgang erfolgreich durchgeführt werden.
Zum Beispiel die folgende Abfrage:
<code class="language-sql">DELETE FROM term_hierarchy AS th WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM term_hierarchy AS th1 INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015) WHERE th1.parent = 1015 );</code>
führt zu einem Syntaxfehler. Allerdings durch Einschließen der Unterabfrage in eine andere Unterabfrage wie folgt:
<code class="language-sql">DELETE e.* FROM tableE e WHERE id IN (SELECT id FROM (SELECT id FROM tableE WHERE arg = 1 AND foo = 'bar') x);</code>
Der Löschvorgang kann erfolgreich durchgeführt werden. Denken Sie daran, dass die umschließende Unterabfrage einen Namen haben sollte, wie im Beispiel durch den Alias „x“ gezeigt.
Das obige ist der detaillierte Inhalt vonWie verwende ich Unterabfragen in MySQL-DELETE-Anweisungen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!