Ich versuche, aus einigen Tabellen gleichzeitig zu löschen. Ich habe ein bisschen recherchiert und mir das ausgedacht
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Ich erhalte jedoch diesen Fehler
Ungefangene Database_Exception [1064]: Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von 'p,
pets_activities
pa ...
Ich habe noch nie zuvor eine Kreuztabelle gelöscht, daher bin ich unerfahren und stecke vorerst fest!
Was mache ich falsch?
SELECT
ähnlich lange gedauert?Da dies eine einfache Eltern-Kind-Beziehung zwischen
pets
und zu sein scheint, istpets_activities
es besser, Ihre Fremdschlüsseleinschränkung mit einer Löschkaskade zu erstellen.Auf diese Weise werden beim
pets
Löschen einer Zeile auch die damit verbundenenpets_activities
Zeilen automatisch gelöscht.Dann wird Ihre Anfrage einfach:
quelle
pa
ein richtiges Kind ist .p
id/pet_id
Benutze das
oder
quelle
Ich habe momentan keine MySQL-Datenbank zum Testen, aber haben Sie versucht anzugeben, was vor der from-Klausel gelöscht werden soll? Beispielsweise:
Ich denke, die von Ihnen verwendete Syntax ist auf neuere Versionen von MySQL beschränkt.
quelle
Die Syntax sieht für mich richtig aus ... versuchen Sie sie zu ändern, um sie zu verwenden
INNER JOIN
...Werfen Sie einen Blick auf diese .
quelle
Für jeden, der dies 2017 liest, habe ich so etwas Ähnliches gemacht.
Um Zeilen aus mehreren Tabellen zu löschen, wird im Allgemeinen die folgende Syntax angegeben. Die Lösung basiert auf der Annahme, dass zwischen den beiden Tabellen eine gewisse Beziehung besteht.
quelle
Ich habe diesen Artikel gefunden, der Ihnen zeigt, wie Sie Daten aus mehreren Tabellen mithilfe der MySQL DELETE JOIN- Anweisung mit guter Erklärung löschen .
quelle