Maison > base de données > tutoriel mysql > Utiliser HAVING sans GROUP BY Standard SQL ?

Utiliser HAVING sans GROUP BY Standard SQL ?

DDD
Libérer: 2024-12-31 00:12:26
original
177 Les gens l'ont consulté

Is Using HAVING Without GROUP BY Standard SQL?

HAVING sans GROUP BY : conformité SQL standard

La structure de requête présentée dans la question :

SELECT *
FROM Book
HAVING NumberOfPages = MAX(NumberOfPages)
Copier après la connexion

soulève préoccupations concernant sa validité selon le standard SQL. La requête utilise une clause HAVING sans clause GROUP BY correspondante.

Le standard SQL définit qu'une clause HAVING est valide si ses conditions de recherche satisfont à des critères spécifiques. Ces critères incluent le fait d'être fonctionnellement dépendant des colonnes référencées dans la clause GROUP BY ou d'être des références externes.

Dans la requête donnée, il n'y a pas de clause GROUP BY. Par conséquent, la condition de recherche NumberOfPages = MAX(NumberOfPages) ne répond pas aux critères définis, car il n'y a pas de dépendance fonctionnelle univoque de NumberOfPages sur un groupe spécifique.

Pour se conformer à la norme, la requête devrait être modifié pour inclure une clause GROUP BY, telle que :

SELECT *
FROM Book
GROUP BY BookId
HAVING NumberOfPages = MAX(NumberOfPages)
Copier après la connexion

Dans cette requête révisée, la clause GROUP BY partitionne les données par BookId, créer des groupes distincts pour chaque livre. La clause HAVING devient désormais valide, car elle opère sur ces groupes, vérifiant si un groupe contient une ligne avec le nombre maximal de pages.

Il est important de noter que certains systèmes de bases de données, tels que MySQL, peuvent autoriser de telles requêtes sans une clause GROUP BY, mais ce comportement est considéré comme une extension non standard.

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