Maison  >  Article  >  base de données  >  Pourquoi puis-je utiliser des fonctions d'agrégation sans GROUP BY dans MySQL ?

Pourquoi puis-je utiliser des fonctions d'agrégation sans GROUP BY dans MySQL ?

DDD
DDDoriginal
2024-11-06 11:07:02841parcourir

Why Can I Use Aggregate Functions Without GROUP BY in MySQL?

Traitement unique par MySQL des fonctions d'agrégation sans GROUP BY

Dans MySQL, contrairement à d'autres systèmes de gestion de bases de données relationnelles, il est possible d'utiliser des fonctions d'agrégation dans la liste SELECT sans spécifier de clause GROUP BY. Ce comportement a soulevé des questions parmi les développeurs familiers avec les plates-formes de SGBD plus restrictives.

La justification de MySQL

MySQL permet cette flexibilité dès sa conception, le considérant comme une extension précieuse du SQL standard. Lorsqu'une fonction d'agrégation est utilisée en l'absence de GROUP BY, le résultat renvoyé représente une seule ligne contenant la valeur agrégée calculée sur l'ensemble de la table. Cela peut être utile dans les scénarios où des informations récapitulatives sont souhaitées sans avoir besoin de regroupement.

Exemple

Par exemple, considérons la requête :

SELECT col1, col2, SUM(col3) FROM tbl1;

Sans GROUP BY, MySQL interprète cela comme un groupe unique et fournit le résultat suivant :

col1    col2    SUM(col3)
-------------------------
(First row value of col1)    (First row value of col2)    (Sum of all col3 values)

Limitations avec ONLY_FULL_GROUP_BY

L'approche indulgente de MySQL en matière de gestion des agrégats les fonctions sans GROUP BY ont été introduites avec ONLY_FULL_GROUP_BY défini sur OFF. Avec la version 5.7.5 de MySQL, ONLY_FULL_GROUP_BY est activé par défaut, ce qui restreint ce comportement.

L'activation de ONLY_FULL_GROUP_BY garantit que les fonctions d'agrégation ne peuvent être utilisées qu'en conjonction avec une clause GROUP BY, ce qui entraîne une erreur si une requête sans elle est rencontrée. Ce changement s'aligne sur la norme SQL et favorise la cohérence des données.

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!

Déclaration:
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