sql >> Databasteknik >  >> RDS >> Mysql

Ta bort sql-rader där ID:n inte har en matchning från en annan tabell

Med LEFT JOIN/IS NULL:

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

Med NOT EXISTS:

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

Med NOT IN:

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

Varning

När det är möjligt, utför DELETEs inom en transaktion (förutsatt att det stöds - IE:Inte på MyISAM) så att du kan använda återställning för att återställa ändringar i händelse av problem.



  1. Vad är korrekt JDBC URL-syntax om Oracle-plånböcker används?

  2. Hur pratar Access med ODBC-datakällor? Del 2

  3. Hur migrerar man en PostgreSQL-databas till en SQLServer-databas?

  4. dbms_output.put_line