Heim >Datenbank >MySQL-Tutorial >Wie lösche ich verwaiste Zeilen in SQL mithilfe der Unterabfragen LEFT JOIN, EXISTS oder NOT IN?

Wie lösche ich verwaiste Zeilen in SQL mithilfe der Unterabfragen LEFT JOIN, EXISTS oder NOT IN?

Linda Hamilton
Linda HamiltonOriginal
2025-01-24 22:35:13576Durchsuche

How to Delete Orphan Rows in SQL Using LEFT JOIN, EXISTS, or NOT IN Subqueries?

Verwenden Sie SQL, um die Zeile ohne Übereinstimmung

zu löschen Bei der Verarbeitung mehrerer Tabellen in der Beziehungsdatenbank ist es manchmal erforderlich, eine Zeile zu identifizieren und zu löschen, ohne dass eine entsprechende Übereinstimmung in einer Tabelle in einer Tabelle entspricht. Dieser Vorgang wird normalerweise als "isolierte Einträge löschen" bezeichnet.

Betrachten Sie die folgende Szene:

Sie haben zwei Tabellen, "Dateien" und "Blob", von denen "Dateien.ID" verwendet werden können, um eine Verbindung zu "Blob.fileid" herzustellen.
  • Ihr Ziel ist es, alle Zeilen zu löschen, die nicht mit dem Wert "ID" in der Tabelle "Blob" übereinstimmen.
  • Aus diesem Grund können Sie verschiedene SQL -Methoden verwenden:

Verwenden Sie den linken Join und ist null

Die Verwendung existiert sub -query
<code class="language-sql">DELETE b FROM BLOB b
LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL</code>

Verwenden Sie nicht in sub -query
<code class="language-sql">DELETE FROM BLOB
WHERE NOT EXISTS(SELECT NULL
                    FROM FILES f
                   WHERE f.id = fileid)</code>

Hinweis:
<code class="language-sql">DELETE FROM BLOB
WHERE fileid NOT IN (SELECT f.id
                        FROM FILES f)</code>
Wenn möglich, wird empfohlen, Löschvorgänge in Transaktionen durchzuführen, damit Sie sich ändern können, wenn Unfälle auftreten.

Das obige ist der detaillierte Inhalt vonWie lösche ich verwaiste Zeilen in SQL mithilfe der Unterabfragen LEFT JOIN, EXISTS oder NOT IN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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