sql >> Database >  >> RDS >> Mysql

Verwijder sql-rijen waar ID's geen overeenkomst hebben uit een andere tabel

LEFT JOIN/IS NULL gebruiken:

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

Met NOT EXISTS:

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

NIET IN gebruiken:

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

Waarschuwing

Voer waar mogelijk DELETE's uit binnen een transactie (ervan uitgaande dat dit wordt ondersteund - IE:niet op MyISAM), zodat u rollback kunt gebruiken om wijzigingen ongedaan te maken in geval van problemen.



  1. Geordend aantal opeenvolgende herhalingen / duplicaten

  2. Zijn er nadelen aan het gebruik van tekst van het gegevenstype voor het opslaan van strings?

  3. CHAR() Voorbeelden in MySQL

  4. MySql-weergaven prestaties