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
Libérer: 2025-01-01 10:03:09
original
392 Les gens l'ont consulté

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

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 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