Mise à jour d'une table impliquant plusieurs jointures dans MySQL
Lorsque vous travaillez avec des requêtes de base de données complexes impliquant plusieurs jointures, la mise à jour d'une table particulière peut poser des problèmes. Même si l’ordre des jointures n’a pas d’impact significatif sur les performances, il peut affecter la facilité d’écriture et de lecture de la requête.
Considérez l'exemple suivant, où l'objectif est de mettre à jour la table tableB :
UPDATE b FROM tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val+c.val WHERE a.val > 10 AND c.val > 10;
Dans la requête ci-dessus, la mise à jour de la tableB implique les tables tableA et tableC via des jointures. Cependant, tableB n'est pas la première table mentionnée dans la clause FROM.
Contrairement à Microsoft SQL Server, MySQL gère différemment les mises à jour multi-tables. La syntaxe UPDATE ne nécessite pas de spécifier explicitement la table à mettre à jour. Au lieu de cela, la clause SET met implicitement à jour la table contenant la colonne à laquelle une nouvelle valeur est attribuée.
Pour obtenir la mise à jour souhaitée à l'aide de la syntaxe MySQL, modifiez la requête comme suit :
UPDATE tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val + c.val WHERE a.val > 10 AND c.val > 10;
UPDATE de MySQL La syntaxe vous permet de mettre à jour une table qui n'est pas la première de la clause FROM en utilisant le nom de la colonne dans la clause SET.
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!