sql >> Databasteknik >  >> RDS >> Mysql

Hur tar man bort från flera tabeller i MySQL?

Använd en JOIN i DELETE uttalande.

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

Alternativt kan du använda...

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

...för att endast ta bort från pets_activities

Se detta .

För raderingar av enstaka tabeller, men med referensintegritet, finns det andra sätt att göra med EXISTS , NOT EXISTS , IN , NOT IN och etc. Men den ovan där du anger från vilka tabeller som ska tas bort med ett alias före FROM klausul kan lättare få dig ur några ganska trånga ställen. Jag brukar nå ut till en EXISTS i 99 % av fallen och sedan är det 1 % där denna MySQL-syntax tar dagen.



  1. Databasalternativ/paketanvändningsrapportering

  2. Transaktionsloggen för databasen är full

  3. Jämförelse av databaskolumntyper i MySQL, PostgreSQL och SQLite? (Cross-mapping)

  4. Köra ett Data Warehouse på PostgreSQL