Heim >Datenbank >MySQL-Tutorial >Wie lösche ich verwaiste Zeilen in SQL mithilfe der Unterabfragen LEFT JOIN, EXISTS oder NOT IN?
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.
Verwenden Sie den linken Join und ist null
<code class="language-sql">DELETE b FROM BLOB b LEFT JOIN FILES f ON f.id = b.fileid WHERE f.id IS NULL</code>
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS(SELECT NULL FROM FILES f WHERE f.id = fileid)</code>
<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!