Heim > Datenbank > MySQL-Tutorial > Wie kann ich Zeilen mit einem LEFT JOIN in MySQL löschen?

Wie kann ich Zeilen mit einem LEFT JOIN in MySQL löschen?

DDD
Freigeben: 2024-11-29 03:53:17
Original
306 Leute haben es durchsucht

How Can I Delete Rows Using a LEFT JOIN in MySQL?

Löschen von Zeilen mit LEFT JOIN in MySQL

In MySQL kann das Erstellen eines LEFT JOIN ein leistungsstarkes Werkzeug zum Abrufen von Daten aus mehreren Tabellen sein. Der Versuch, dieselbe LEFT JOIN-Syntax für eine DELETE-Operation zu verwenden, kann jedoch zu Unklarheiten und Fehlern führen.

Das Problem

Stellen Sie sich ein Szenario vor, in dem wir eine „Frist“ haben "-Tabelle und eine "Job"-Tabelle. Jeder Job hat einen Status und bestimmte Status weisen darauf hin, dass die zugehörige Frist gelöscht werden sollte. Ein LEFT JOIN kann verwendet werden, um die gewünschten Zeilen auszuwählen:

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'
Nach dem Login kopieren

Wenn jedoch versucht wird, diese Zeilen mit derselben LEFT JOIN-Syntax zu löschen:

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'
Nach dem Login kopieren

MySQL gibt einen Fehler aus .

Die Lösung

Um die Zeilen erfolgreich zu löschen, haben wir müssen die betroffenen Tabellen explizit angeben. Dies geschieht, indem die Tabellennamen vor dem Schlüsselwort DELETE platziert werden.

Nur ​​Deadline-Zeilen löschen

Um nur die Deadline-Zeilen zu löschen, verwenden Sie die folgende Abfrage:

DELETE `deadline` 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'
Nach dem Login kopieren

Deadline- und Jobzeilen löschen

Um beide zu löschen Um nur die Frist- und Auftragszeilen zu löschen, verwenden Sie die folgende Abfrage:

DELETE `deadline`, `job` 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'
Nach dem Login kopieren

Nur ​​Auftragszeilen löschen

Um nur die Auftragszeilen zu löschen, verwenden Sie die folgende Abfrage:

DELETE `job` 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'
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen mit einem LEFT JOIN in MySQL löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage