Mysql
 sql >> Database >  >> RDS >> Mysql

Elimina le righe sql in cui gli ID non hanno una corrispondenza da un'altra tabella

Utilizzando LEFT JOIN/IS NULL:

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

Utilizzo di NOT EXISTS:

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

Utilizzo di NOT IN:

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

Avviso

Quando possibile, esegui DELETE all'interno di una transazione (supponendo supportata - IE:non su MyISAM) in modo da poter utilizzare il rollback per ripristinare le modifiche in caso di problemi.