MySQL Löschen von Zeilen aus mehreren Tabellen
Ich habe 2 Tabellen Benutzer und pd mit einer gemeinsamen Spalte i_uid
Für das löschen aus beiden Tabellen eine einzelne Zeile, die i_uid 1010 ich gab Folgendes statement mit mysqli::query im php-Skript
DELETE
FROM `users`,`pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;
Ist dort irgendetwas falsch?
- Funktioniert es, wenn Sie versuchen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
da Sie zum löschen von Zeilen aus mehreren Tabelle, die nur fehlt ist die Angabe, auf welche Tabellen die Zeile wird gelöscht,
in der Abfrage vor löschen von Zeilen aus beiden Tabellen. Ich schlage vor, das zu ändern-Anweisung ANSI join wie unten
wenn Sie löschen möchten, aus
users
Tabelle,FROM
- Klausel, in der die Datensätze gelöscht werden. die Tabelle nach dieFROM
- Klausel sind, wo werden die Datensätze suchen. aber es ist optional, wenn Sie das löschen in einer Tabelle nurdelete p, pc, l, c from posts p inner join post_content pc on p.post_id=pc.post_id inner join likes l on p.post_id=l.post_id inner join comments c on c.post_id=p.post_id where p.post_id=406;
Verwenden
Left Join
und geben Sie die Tabellen, auf denen die entsprechenden Zeilen gelöscht werden.Andere Antworten richtig sind, da aber niemand erwähnt es, ich. Könnten Sie InnoDB Motor und geben Sie die Fremdschlüssel und DELETE ON CASCADE. So dass jedes mal, wenn Sie einen Benutzer löschen, löschen Sie alle verweisen auf Zeilen aus verschiedenen Tabellen.
Lesen, auf Fremdschlüssel und DELETE ON CASCADE
Um es einfach zu halten schlage ich vor, mit nur zwei Fragen: