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

Hvordan sletter man fra flere tabeller i MySQL?

Brug en JOIN i DELETE erklæring.

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 bruge...

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

...for kun at slette fra pets_activities

Se dette .

For sletninger af en enkelt tabel, men med referenceintegritet, er der andre måder at gøre med EXISTS , NOT EXISTS , IN , NOT IN og osv. Men den ovenfor, hvor du angiver fra hvilke tabeller, der skal slettes med et alias før FROM klausul kan nemmere få dig ud af et par temmelig trange punkter. Jeg har en tendens til at kontakte en EXISTS i 99 % af tilfældene, og så er der de 1 %, hvor denne MySQL-syntaks tager dagen.



  1. Hvordan håndterer man fejl for duplikerede poster?

  2. Pivotdata i T-SQL

  3. Sådan kortlægges PostgreSQL-arrayfelt i Django ORM

  4. Django:tilladelse nægtet ved forsøg på at få adgang til databasen efter gendannelse (migrering)