Maison >base de données >tutoriel mysql >Comment puis-je utiliser des fonctions d'agrégation telles que SUM dans une requête SQL UPDATE ?

Comment puis-je utiliser des fonctions d'agrégation telles que SUM dans une requête SQL UPDATE ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-01 10:03:09418parcourir

How Can I Use Aggregate Functions Like SUM in an SQL UPDATE Query?

Fonction d'agrégation dans une requête de mise à jour SQL

La question cherche à comprendre comment les fonctions d'agrégation, telles que SUM, peuvent être utilisées dans la mise à jour SQL requêtes. L'exemple fourni tente de mettre à jour une valeur dans une table en fonction de la somme des valeurs d'une autre table. Cependant, elle se heurte à la limitation selon laquelle les instructions SET ne prennent pas en charge SUM et GROUP BY.

Pour résoudre ce problème, la solution utilise une sous-requête pour calculer la somme, puis utilise le résultat dans la requête de mise à jour. L'extrait de code suivant illustre l'approche corrigée :

UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
   from table2
  group by field3) as t2
on t2.field3 = t1.field3  

Dans cette requête corrigée :

  1. Une sous-requête est définie pour calculer la somme de field2 pour chaque valeur unique de field3 dans la table2. . Le résultat est stocké dans une table ou une vue temporaire nommée t2.
  2. La requête de mise à jour utilise un JOIN pour fusionner la table1 avec t2 en fonction de la colonne commune field3.
  3. L'instruction SET met à jour la colonne field1 dans la table 1 à la valeur field2Sum correspondante calculée dans la sous-requête.

En employant une sous-requête, cette approche répond efficacement aux limitations des instructions SET et permet l'utilisation de fonctions d'agrégation dans les requêtes de mise à jour.

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