/ / Wie wird diese MySQL SELECT-Abfrage in eine DELETE-Abfrage umgewandelt? - mysql, sql, select, sql-delete

Wie wird diese MySQL SELECT-Abfrage in eine DELETE-Abfrage umgewandelt? - mysql, sql, select, sql-delete

Ich möchte bestimmte Elemente aus der Datenbank löschen. Ich habe folgende Abfrage:

SELECT *
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

Dies funktioniert und gibt 2 Ergebnisse zurück.

Jetzt will ich das drehen SELECT Frage in ein DELETE Abfrage. Folgendes funktioniert jedoch nicht:

DELETE FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

MySQL gibt den folgenden Fehler aus:

1064 - Sie haben einen Fehler in Ihrer SQL-Syntax.prüfe das Handbuch entspricht Ihrem MySQL-Server Version für die richtige Syntax zu verwenden in der Nähe von "WHERE entries.sheetID = sheets.id UND sheets.clientID = 13 "at Linie 1

Was mache ich hier falsch?

Antworten:

10 für die Antwort № 1

MySQL 4 und höher unterstützt Löschen von mehreren Tabellen gleichzeitigmit der folgenden Syntax:

DELETE sheets, entries
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

Wenn Sie MySQL unter Version 4 verwenden, müssen Sie Zeilen aus einer Tabelle gleichzeitig löschen, und Sie können eine der anderen hier aufgeführten Lösungen verwenden.


2 für die Antwort № 2

Versuchen

DELETE sheets, entries
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

Ich habe SQL delete aus 2 Tabellen gleichzeitig gegoogelt und gefunden dieser Forenbeitrag


2 für die Antwort № 3

MySQL lässt Sie über einen Join löschen, aber Sie müssen angeben, welche Spalten verwendet werden, also würde die korrekte Syntax mit Ihrem Beispiel verwendet werden

DELETE-Blätter. *, Einträge. * FROM Blätter, Einträge WHERE entries.sheetID = sheets.id UND sheets.clientID = 13

0 für die Antwort № 4

Kannst du sowas versuchen?

DELETE FROM sheets
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

wenn Sie aus den Blättern löschen wollen und

DELETE FROM entries
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

wenn es von Einträgen ist


0 für die Antwort № 5

Ich glaube, du kannst nur DELETE von einem Tisch zu einer Zeit.

DELETE FROM entries
WHERE entries.sheetID IN
(SELECT ID FROM sheets WHERE clientID = 13)

DELETE FROM sheets
WHERE sheets.clientID = 13

0 für die Antwort № 6

Sie können jeweils nur eine Tabelle löschen. Wenn Sie beide Löschvorgänge aus derselben Abfrage ausführen möchten, können Sie Folgendes tun:

DELETE from sheets where id in (
SELECT sheets.id
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13);
DELETE from entries where id in (
SELECT entries.id
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13);