Maison >base de données >tutoriel mysql >Une clause HAVING peut-elle exister sans clause GROUP BY en SQL standard ?

Une clause HAVING peut-elle exister sans clause GROUP BY en SQL standard ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 09:25:40264parcourir

Can a HAVING Clause Exist Without a GROUP BY Clause in Standard SQL?

HAVING sans GROUP BY : conformité au standard SQL

Une clause HAVING peut-elle exister sans clause GROUP BY en SQL standard ? Selon la norme, une clause GROUP BY est requise lors de l'utilisation d'une clause HAVING. La norme stipule que chaque colonne référencée dans la clause HAVING doit être fonctionnellement dépendante des colonnes de la clause GROUP BY ou d'une référence externe.

Cependant, MySQL autorise une clause HAVING sans clause GROUP BY, et elle fonctionne comme prévu dans une condition spécifique : lorsque la première ligne a la valeur maximale pour la colonne spécifiée.

Pour se conformer à la norme, la requête doit être modifiée pour inclure une clause GROUP BY. Par exemple, si nous voulons récupérer les lignes avec le nombre maximum de pages, la requête corrigée serait :

SELECT *
FROM Book
GROUP BY BookID
HAVING NumberOfPages = MAX(NumberOfPages)

Cette requête regrouperait les lignes par BookID et appliquerait la condition HAVING à chaque groupe, renvoyant uniquement les lignes avec le nombre maximum de pages dans chaque groupe.

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