Fonctions d'agrégation MySQL : pourquoi aucune clause GROUP BY n'est requise ?
Dans MySQL, les fonctions d'agrégation peuvent être utilisées dans la liste SELECT sans accompagnement Clause GROUP BY, contrairement à d'autres produits SGBDR tels que SQL Server. Ce comportement est intentionnel, fournissant une extension unique au standard.
Par exemple, la requête "SELECT col1,col2,sum(col3) FROM tbl1;" s'exécutera avec succès, renvoyant une seule ligne contenant les valeurs de la première ligne pour col1 et col2 et la somme de toutes les valeurs col3.
Explication
MySQL autorise ce comportement car il considère que sans clause GROUP BY, toutes les lignes sont implicitement regroupées. Par conséquent, une fonction d'agrégation appliquée à une table entière ou à plusieurs lignes opère sur un seul groupe implicite.
Comportement précédent
Avant la version MySQL 5.7.5, ce le comportement n’était soumis à aucune restriction. Cependant, un nouveau mode SQL du serveur, ONLY_FULL_GROUP_BY, a été introduit pour imposer une adhésion plus stricte à la norme SQL. Lorsqu'il est activé, ce mode nécessite une clause GROUP BY pour toute utilisation de fonctions d'agrégation.
Conclusion
La gestion unique par MySQL des fonctions d'agrégation sans clause GROUP BY offre une flexibilité dans les données récupération. Cependant, il est essentiel de comprendre ce comportement et d'envisager d'activer ONLY_FULL_GROUP_BY pour garantir la conformité aux normes SQL.
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!