Mettre à JOUR plusieurs tables dans MySQL en utilisant une JOINTURE GAUCHE
J'ai deux tables, et que vous voulez mettre à jour les champs dans le T1 pour toutes les lignes dans un LEFT JOIN.
Pour un exemple simple, mise à jour toutes les lignes de la suite de résultats:
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
La Manuel MySQL stipule que:
Multiples-tableau de mise à JOUR des déclarations pouvez utiliser n'importe quel type de jointure autorisés dans les instructions SELECT, tels que LEFT JOIN.
Mais je ne trouve pas la bonne syntaxe pour le faire que dans la documentation de multiples tables de mise à JOUR.
Quelle est la bonne syntaxe?
Vous devez vous connecter pour publier un commentaire.
Noter que pour un
SELECT
il serait plus efficace d'utiliserNOT IN
/NOT EXISTS
syntaxe:Voir l'article dans mon blog pour les détails de performance:
LEFT JOIN
par rapport àNOT IN
Malheureusement,
MySQL
ne permet pas l'utilisation de la table cible dans une sous-requête dans uneUPDATE
déclaration, c'est pourquoi vous aurez besoin de s'en tenir à de moins en moins efficaceLEFT JOIN
syntaxe.La même chose peut être appliqué à un scénario où les données ont été normalisées, mais maintenant, vous voulez une table de valeurs que l'on retrouve dans une troisième table. Ce qui suit va vous permettre de mettre à jour une table avec des informations provenant d'une troisième table qui est aimé par une seconde table.
Ce serait utile dans le cas où vous aviez des utilisateurs et des groupes, et vous souhaitez qu'un utilisateur d'être en mesure d'ajouter leurs propres variation du nom du groupe, donc à l'origine que vous souhaitez importer le groupe existant noms dans le champ dans lequel l'utilisateur va être en mesure de le modifier.
Je vais mettre à jour les champs de texte dans un tableau avec Un
et d'en venir à ce résultat:
où un seul champ de la Table B est acceptée, mais je vais en venir à ce résultat: