Heim > Datenbank > MySQL-Tutorial > Wie verwende ich Unterabfragen in MySQL-DELETE-Anweisungen richtig?

Wie verwende ich Unterabfragen in MySQL-DELETE-Anweisungen richtig?

Patricia Arquette
Freigeben: 2025-01-10 17:56:42
Original
499 Leute haben es durchsucht

How to Correctly Use Subqueries in MySQL DELETE Statements?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage