Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como excluir de várias tabelas no MySQL?


Use um JOIN no DELETE declaração.
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

Alternativamente, você pode usar...
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

...para excluir apenas de pets_activities

Veja este .

Para exclusões de tabela única, mas com integridade referencial, existem outras maneiras de fazer com EXISTS , NOT EXISTS , IN , NOT IN e etc. Mas o acima onde você especifica de quais tabelas excluir com um alias antes do FROM cláusula pode tirá-lo de alguns pontos muito apertados mais facilmente. Eu costumo entrar em contato com um EXISTS em 99% dos casos e depois há o 1% em que essa sintaxe do MySQL leva o dia.