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

Come eliminare da più tabelle in MySQL?

Utilizza un JOIN nel DELETE dichiarazione.

DELETE p, pa
      FROM pets p
      JOIN pets_activities pa ON pa.id = p.pet_id
     WHERE p.order > :order
       AND p.pet_id = :pet_id

In alternativa puoi usare...

DELETE pa
      FROM pets_activities pa
      JOIN pets p ON pa.id = p.pet_id
 WHERE p.order > :order
   AND p.pet_id = :pet_id

...per eliminare solo da pets_activities

Vedi questo .

Per le eliminazioni di singole tabelle, ma con integrità referenziale, ci sono altri modi per farlo con EXISTS , NOT EXISTS , IN , NOT IN ed ecc. Ma quello sopra in cui specifichi da quali tabelle eliminare con un alias prima di FROM La clausola può tirarti fuori da alcuni punti piuttosto stretti più facilmente. Tendo a contattare un EXISTS nel 99% dei casi e poi c'è l'1% in cui questa sintassi MySQL prende il sopravvento.