Ich habe zwei Tabellen, eine für Jobfristen, eine für die Beschreibung eines Jobs. Jeder Job kann einen Status annehmen, und einige Status bedeuten, dass die Fristen der Jobs aus der anderen Tabelle gelöscht werden müssen.
Ich kann leicht SELECT
die Jobs / Fristen, die meine Kriterien erfüllen, mit einem LEFT JOIN
:
SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
( status
gehört nicht zur job
Tabelle deadline
)
Wenn ich diese Zeilen löschen möchte deadline
, gibt MySQL einen Fehler aus. Meine Anfrage lautet:
DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
MySQL-Fehler sagt nichts:
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 'LEFT JOIN
job
ON Deadline.job_id = job.job_id WHEREstatus
=' szaml 'in Zeile 1
Wie kann ich meine SELECT
in eine funktionierende DELETE
Abfrage verwandeln ?
quelle
DELETE
undFROM
, aber die Abfrage lief trotzdem in Ordnung , wenn ich auf Los drückte.Wenn Sie "Tabelle als" verwenden, geben Sie diese zum Löschen an.
Im Beispiel lösche ich alle table_1 Zeilen, die in table_2 nicht vorhanden sind.
quelle
Ich bin nicht sicher, ob diese Art von Unterabfrage in MySQL funktioniert, aber versuchen Sie es. Ich gehe davon aus, dass Sie eine ID-Spalte in Ihrer Termintabelle haben.
quelle
DELETE
die Abfrage eindeutig machen soll. Die VerwendungIn
mit Unterabfragen macht alles viel langsamer. Es wird am besten vermieden.DELETE
und erwähntFROM
.Versuche dies:
quelle
Mit MySQL können Sie die INNER JOIN-Klausel in der DELETE-Anweisung verwenden, um Zeilen aus einer Tabelle und die übereinstimmenden Zeilen in einer anderen Tabelle zu löschen.
Verwenden Sie beispielsweise die folgende Anweisung, um Zeilen aus T1- und T2-Tabellen zu löschen, die eine bestimmte Bedingung erfüllen:
Beachten Sie, dass Sie die Tabellennamen T1 und T2 zwischen die Schlüsselwörter DELETE und FROM setzen. Wenn Sie die T1-Tabelle weglassen, löscht die DELETE-Anweisung nur Zeilen in der T2-Tabelle. Wenn Sie die Tabelle T2 weglassen, löscht die Anweisung DELETE nur Zeilen in der Tabelle T1.
Ich hoffe das hilft.
quelle