Maison > base de données > tutoriel mysql > Comment mettre à jour plusieurs tables MySQL à l'aide d'un LEFT JOIN ?

Comment mettre à jour plusieurs tables MySQL à l'aide d'un LEFT JOIN ?

Susan Sarandon
Libérer: 2024-12-15 13:33:26
original
1036 Les gens l'ont consulté

How to Update Multiple MySQL Tables Using a LEFT JOIN?

Mise à jour de plusieurs tables via LEFT JOIN dans MySQL

Question :

Comment pouvez-vous mettre à jour champs dans une table en utilisant un LEFT JOIN sur plusieurs tables ? Considérons un scénario dans lequel vous souhaitez mettre à jour toutes les lignes de l'ensemble de résultats à partir de la requête LEFT JOIN suivante :

SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
Copier après la connexion

Réponse :

MySQL vous permet d'effectuer une MISE À JOUR instructions utilisant n'importe quel type de jointure pris en charge dans les instructions SELECT, y compris LEFT JOIN. La syntaxe appropriée est la suivante :

UPDATE  t1
LEFT JOIN
        t2
ON      t2.id = t1.id
SET     t1.col1 = newvalue
WHERE   t2.id IS NULL
Copier après la connexion

Notez que pour de meilleures performances dans une instruction SELECT, envisagez d'utiliser la syntaxe NOT IN / NOT EXISTS :

SELECT  t1.*
FROM    t1
WHERE   t1.id NOT IN
        (
        SELECT  id
        FROM    t2
        )
Copier après la connexion

Pour plus de détails sur les performances, reportez-vous à cet article : Recherche de commandes incomplètes : performances de LEFT JOIN par rapport à NOT IN.

Cependant, MySQL ne prend pas en charge l'utilisation de la table cible dans une sous-requête au sein d'un Instruction UPDATE. Ainsi, vous devez vous fier à la syntaxe LEFT JOIN, moins efficace, pour les mises à jour impliquant plusieurs tables.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal