Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie lösche ich aus mehreren Tabellen in MySQL?

Verwenden Sie einen JOIN im DELETE Erklärung.

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

Alternativ können Sie auch ...

verwenden
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

...nur aus pets_activities zu löschen

Siehe dies .

Für das Löschen einzelner Tabellen, jedoch mit referenzieller Integrität, gibt es andere Möglichkeiten, dies mit EXISTS zu tun , NOT EXISTS , IN , NOT IN und etc. Aber die obige, wo Sie mit einem Alias ​​vor dem FROM angeben, aus welchen Tabellen gelöscht werden soll Klausel kann Sie leichter aus ein paar ziemlich engen Stellen herausholen. Ich neige dazu, mich an einen EXISTS zu wenden in 99 % der Fälle und dann gibt es noch die 1 %, in denen diese MySQL-Syntax den Tag überdauert.