sql >> Databáze >  >> RDS >> Mysql

Odstraňte řádky SQL, kde ID nemají shodu, z jiné tabulky

Pomocí LEFT JOIN/IS NULL:

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

Pomocí NOT EXISTS:

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

Pomocí NOT IN:

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

Upozornění

Kdykoli je to možné, provádějte DELETE v rámci transakce (za předpokladu, že je podporováno – IE:Není na MyISAM), abyste mohli v případě problémů vrátit změny zpět.



  1. Ekvivalentní funkce pro DATEADD() v Oracle

  2. SQLite Select Distinct

  3. Oracle Database 21c

  4. Vygenerujte náhodnou int hodnotu od 3 do 6