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
938 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!

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