Maison > base de données > tutoriel mysql > Pourquoi le « GROUP BY » de MySQL diffère-t-il du SQL standard ?

Pourquoi le « GROUP BY » de MySQL diffère-t-il du SQL standard ?

DDD
Libérer: 2025-01-12 10:12:43
original
377 Les gens l'ont consulté

Why Does MySQL's `GROUP BY` Differ from Standard SQL?

Méthode de requête peu orthodoxe « GROUP BY » de MySQL

Contrairement à Oracle et SQL Server, MySQL permet d'utiliser des requêtes "group by" sans fonctions d'agrégation. Ce comportement viole la norme ANSI-SQL et a longtemps été une source de confusion.

Raisons pour MySQL

Selon le manuel en ligne MySQL (version 5.0), cette approche non traditionnelle est implémentée pour deux raisons principales :

  1. Performance : Dans de nombreux cas, les requêtes sans fonctions d'agrégation peuvent être exécutées plus efficacement sans avoir à effectuer d'agrégations supplémentaires.
  2. Commodité pour l'utilisateur : Lorsqu'une requête contient des colonnes non agrégées (telles que des identifiants ou des valeurs de recherche), il est très pratique de pouvoir inclure ces colonnes dans le résultat final sans agrégation inutile.

Critiques et solutions

L'approche de MySQL a été critiquée pour ne pas être conforme à la norme ANSI-SQL. Pour résoudre ces problèmes, MySQL fournit un paramètre de configuration only_full_group_by qui peut être défini pour appliquer un comportement standard.

Résumé

Bien que l'approche non conventionnelle de MySQL pour les requêtes « regrouper par » présente des inconvénients, elle offre également des avantages en termes de performances et de commodité. Les développeurs doivent être conscients de ce comportement et l’utiliser avec prudence pour garantir des résultats précis et significatifs.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal