Maison > base de données > tutoriel mysql > Comment puis-je utiliser les fonctions d'agrégation dans les instructions SQL UPDATE ?

Comment puis-je utiliser les fonctions d'agrégation dans les instructions SQL UPDATE ?

Linda Hamilton
Libérer: 2024-12-25 00:17:08
original
858 Les gens l'ont consulté

How Can I Use Aggregate Functions in SQL UPDATE Statements?

Comment utiliser les fonctions d'agrégation dans les requêtes SQL UPDATE

En SQL, il est souvent nécessaire de mettre à jour les valeurs d'une table en fonction des données agrégées d'une autre tableau. Cependant, la requête UPDATE standard ne prend pas en charge les fonctions d'agrégation telles que SUM ou GROUP BY.

Pour résoudre ce problème, suivez ces étapes :

Exemple :

Considérez le scénario suivant : Vous souhaitez mettre à jour la colonne field1 dans la table table1 avec la somme des valeurs field2 pour chaque field3 de la table2. table.

Implémentation incorrecte :

UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Copier après la connexion

Cette requête est incorrecte car la clause SET ne peut pas utiliser de fonction d'agrégation et la clause GROUP BY n'est pas prise en charge dans ce contexte. .

Implémentation correcte :

Pour y parvenir correctement, utilisez une sous-requête pour calculer l'agrégat et joignez-le à la table cible pour la mise à jour :

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

Cette requête crée d'abord une sous-requête qui calcule la somme du champ2 pour chaque champ3 de la table2, agrégeant efficacement les données. Les résultats sont stockés dans une table temporaire, qui est ensuite jointe à la table1 en utilisant la colonne field3 comme condition de jointure. La colonne field1 de la table1 est ensuite mise à jour avec les valeurs field2Sum correspondantes.

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