Maison > base de données > tutoriel mysql > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-24 07:19:14
original
150 Les gens l'ont consulté

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;
Copier après la connexion

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;
Copier après la connexion

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!

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