sql >> Base de Datos >  >> RDS >> Mysql

Elimine las filas de sql donde las ID no tienen una coincidencia de otra tabla

Utilizando LEFT JOIN/IS NULL:

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

Usando NO EXISTE:

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

Usando NO EN:

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

Advertencia

Siempre que sea posible, realice DELETES dentro de una transacción (suponiendo que sea compatible, es decir, no en MyISAM) para que pueda usar la reversión para revertir los cambios en caso de problemas.