Fonctions d'agrégation MySQL sans GROUP BY : pourquoi et comment ?
Contrairement à d'autres systèmes de gestion de bases de données relationnelles (SGBDR) qui génèrent une erreur lorsqu'un La fonction d'agrégation apparaît dans la liste SELECT sans clause GROUP BY, MySQL le permet. Ce comportement a intrigué les développeurs, conduisant à la requête suivante :
Pourquoi MySQL autorise-t-il les fonctions d'agrégation sans GROUP BY ?
Réponse :
La philosophie de conception de MySQL permet des fonctionnalités étendues au-delà de la norme SQL. Autoriser les fonctions d'agrégation sans GROUP BY est l'une de ces extensions.
Lors de l'exécution d'une requête telle que SELECT col1,col2,sum(col3) FROM tbl1, MySQL regroupe efficacement les lignes par toutes les colonnes non agrégées (dans ce cas). cas, col1 et col2). Il renvoie ensuite le résultat de la fonction d'agrégation (somme de col3) pour le seul groupe indéterminé.
Les versions antérieures de MySQL autorisaient ce comportement par défaut. Cependant, à partir de MySQL 5.7.5, le mode SQL ONLY_FULL_GROUP_BY a été introduit pour appliquer une conformité SQL plus stricte et interdire les requêtes avec des fonctions d'agrégation sans GROUP BY. Ce mode peut être activé ou désactivé selon les besoins. Par défaut, il est activé dans les versions MySQL 8.0 et supérieures.
Notes supplémentaires :
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!