Um Einträge in einer MySQL-Tabelle zu löschen, denen entsprechende IDs in einer anderen Tabelle fehlen, befolgen Sie diese Methode:
b AUS BLOB b LÖSCHEN
LEFT JOIN FILES f ON f.id = b.fileid
WO f.id NULL IST
Diese Abfrage verwendet LEFT JOIN, um Zeilen zwischen den Tabellen „BLOB“ und „FILES“ abzugleichen. Es löscht Zeilen in „BLOB“, deren entsprechende „id“-Spalte in „FILES“ NULL ist, was auf das Vorhandensein verwaister Einträge hinweist.
VOM BLOB LÖSCHEN
WHERE NOT EXISTS(SELECT NULL
AUS DATEIEN f
WO f.id = fileid)
Diese Abfrage verwendet eine Unterabfrage, um zu prüfen, ob jede Zeile von „BLOB“ eine passende Zeile in „FILES“ hat. Wenn es keine Übereinstimmung gibt, entfernt die äußere Abfrage die Zeile aus „BLOB“.
VOM BLOB LÖSCHEN
WHERE fileid NOT IN (SELECT f.id
AUS DATEIEN f)
Diese Abfrage verwendet den NOT IN-Operator, um die Zeilen in der „BLOB“-Tabelle zu identifizieren, für die in der „FILES“-Tabelle kein „fileid“-Wert vorhanden ist, wodurch verwaiste Einträge effektiv entfernt werden.
Wenn Sie DELETE-Vorgänge ausführen, sollten Sie die Verwendung von Transaktionen in Betracht ziehen, wenn Ihre Datenbank-Engine dies unterstützt (z. B. nicht MyISAM). Dadurch können Sie Änderungen rückgängig machen, wenn ein Fehler auftritt.
Das obige ist der detaillierte Inhalt vonWie lösche ich verwaiste Zeilen in MySQL basierend auf nicht übereinstimmenden IDs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!