Maison > base de données > tutoriel mysql > Pourquoi MySQL peut-il utiliser des fonctions d'agrégation sans clause GROUP BY ?

Pourquoi MySQL peut-il utiliser des fonctions d'agrégation sans clause GROUP BY ?

Susan Sarandon
Libérer: 2024-11-07 12:52:03
original
825 Les gens l'ont consulté

Why Can MySQL Use Aggregate Functions Without a GROUP BY Clause?

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!

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