Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Löschen Sie SQL-Zeilen, in denen IDs keine Übereinstimmung aus einer anderen Tabelle haben

Verwendung von LEFT JOIN/IS NULL:

DELETE b FROM BLOB b 
  LEFT JOIN FILES f ON f.id = b.fileid 
      WHERE f.id IS NULL

Verwendung von NOT EXISTS:

DELETE FROM BLOB 
 WHERE NOT EXISTS(SELECT NULL
                    FROM FILES f
                   WHERE f.id = fileid)

Verwendung von NOT IN:

DELETE FROM BLOB
 WHERE fileid NOT IN (SELECT f.id 
                        FROM FILES f)

Warnung

Führen Sie wann immer möglich DELETE innerhalb einer Transaktion durch (unter der Annahme, dass dies unterstützt wird - IE:Nicht auf MyISAM), damit Sie Rollback verwenden können, um Änderungen im Falle von Problemen rückgängig zu machen.