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!