Agrégation dans les requêtes SQL UPDATE : une solution concise
Dans les opérations de base de données, la mise à jour des valeurs de table en fonction de fonctions d'agrégation peut poser un défi. Explorons un scénario courant dans lequel l'objectif est de définir la valeur d'une table sur la somme des valeurs d'une autre table.
Considérons la requête suivante :
UPDATE table1 SET field1 = SUM(table2.field2) FROM table1 INNER JOIN table2 ON table1.field3 = table2.field3 GROUP BY table1.field3
Bien qu'intuitive, cette requête échouera en raison de deux contraintes clés : SET ne prend pas en charge les fonctions d'agrégation telles que SUM et GROUP BY n'est pas autorisé dans les requêtes UPDATE.
Pour résoudre ce problème, nous pouvons utilisez une sous-requête pour calculer la somme globale, puis utilisez la valeur mise à jour dans la requête UPDATE.
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 affinée :
En employant cette approche, vous pouvez effectuer avec succès des mises à jour globales dans SQL et obtenez les résultats de manipulation de données souhaités.
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!