Maison  >  Article  >  base de données  >  Comment mettre à jour efficacement une table dans MySQL à l'aide de plusieurs jointures ?

Comment mettre à jour efficacement une table dans MySQL à l'aide de plusieurs jointures ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 07:19:14155parcourir

How to Efficiently Update a Table in MySQL Using Multiple Joins?

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!

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