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
Susan Sarandonoriginal
2024-12-15 13:33:26941parcourir

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

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

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
        )

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:
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