Maison > base de données > tutoriel mysql > Comment puis-je supprimer des lignes à l'aide d'un LEFT JOIN dans MySQL ?

Comment puis-je supprimer des lignes à l'aide d'un LEFT JOIN dans MySQL ?

DDD
Libérer: 2024-11-29 03:53:17
original
306 Les gens l'ont consulté

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

Suppression de lignes à l'aide de LEFT JOIN dans MySQL

Dans MySQL, la création d'un LEFT JOIN peut être un outil puissant pour récupérer des données de plusieurs tables. Cependant, tenter d'utiliser la même syntaxe LEFT JOIN pour une opération DELETE peut entraîner une ambiguïté et des erreurs.

Le problème

Considérez un scénario dans lequel nous avons un « délai » " table et une table "travail". Chaque tâche a un statut, et certains statuts indiquent que l'échéance associée doit être supprimée. Un LEFT JOIN peut être utilisé pour sélectionner les lignes souhaitées :

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'
Copier après la connexion

Cependant, lorsque vous tentez de supprimer ces lignes en utilisant la même syntaxe LEFT JOIN :

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'
Copier après la connexion

MySQL générera une erreur .

La solution

Pour réussir à supprimer le lignes, nous devons spécifier explicitement les tables à affecter. Cela se fait en plaçant les noms de table avant le mot-clé DELETE.

Suppression uniquement des lignes de date limite

Pour supprimer uniquement les lignes de date limite, utilisez la requête suivante :

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'
Copier après la connexion

Suppression des lignes de date limite et de travail

Pour supprimer les deux la date limite et les lignes de travail, utilisez la requête suivante :

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'
Copier après la connexion

Suppression uniquement des lignes de travail

Pour supprimer uniquement les lignes de travail, utilisez la requête suivante :

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'
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal