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