Verwaiste Zeilen basierend auf nicht übereinstimmenden IDs löschen
Frage:
Löschen Sie blob
aus der Tabelle fileid
. In der Tabelle files
wurde keine passende Zeile id
gefunden.
Tabellenstruktur:
<code>files表: | id | .... | |---|---| | 1 | .... | | 2 | .... | | 7 | .... | | 9 | .... | blob表: | fileid | .... | |---|---| | 1 | .... | | 2 | .... | | 3 | .... | | 4 | .... | | 4 | .... | | 4 | .... | | 9 | .... |</code>
Erwartete Ergebnisse:
Löschen Sie Zeilen mit blob
s 3 und 4 in der fileid
-Tabelle, da sie keine passenden files
in der fileid
-Tabelle haben.
Lösung:
1. Verwenden Sie LEFT JOIN/IS 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>
2. Verwenden Sie NOT EXISTS:
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS(SELECT NULL FROM FILES f WHERE f.id = fileid)</code>
3. Verwenden Sie NICHT IN:
<code class="language-sql">DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id FROM FILES f)</code>
Warnung:
Um im Fehlerfall ein Rollback sicherzustellen, führen Sie innerhalb einer Transaktion einen DELETE-Vorgang durch.
Das obige ist der detaillierte Inhalt vonWie lösche ich Orphan -Zeilen in einer Datenbanktabelle basierend auf nicht übereinstimmenden IDs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!