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

Une clause HAVING peut-elle être utilisée sans clause GROUP BY en SQL standard ?

Linda Hamilton
Libérer: 2025-01-04 03:18:38
original
1013 Les gens l'ont consulté

Can a HAVING Clause Be Used Without a GROUP BY Clause in Standard SQL?

HAVING sans GROUP BY

Selon la norme SQL, une clause HAVING est généralement utilisée en conjonction avec une clause GROUP BY pour filtrer les groupes de lignes basées sur des calculs agrégés effectués sur ces groupes. Cependant, certains systèmes de bases de données permettent d'utiliser une clause HAVING sans GROUP BY.

Question :

Est-il possible d'utiliser une clause HAVING sans GROUP BY selon le Standard SQL ?

Réponse :

Oui, il est possible d'utiliser une clause HAVING sans GROUP BY en SQL Standard. Cependant, le comportement de ces requêtes varie en fonction du système de base de données utilisé.

Comportement MySQL :

Dans MySQL, une clause HAVING sans GROUP BY est autorisée, à condition que la première ligne du jeu de résultats a la valeur maximale pour la colonne agrégée. Ce comportement s'écarte du standard SQL, qui nécessite généralement une clause GROUP BY en présence d'une clause HAVING.

Interprétation du standard SQL :

Le standard SQL définit un HAVING comme agissant sur des agrégats calculés sur l'ensemble de résultats produit par une clause GROUP BY. Sans clause GROUP BY, il devient difficile de savoir à quelles lignes la clause HAVING fait référence.

Par conséquent, selon la norme SQL, une clause HAVING sans GROUP BY n'est pas strictement valide. Cependant, certains systèmes de bases de données, tels que MySQL, peuvent autoriser de telles requêtes pour des raisons de compatibilité.

Exemple SQL standard valide :

SELECT 'T' AS result
FROM Book
HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
Copier après la connexion

Cette requête est valide en SQL standard. et renverra une seule ligne avec une colonne contenant la valeur « T » s'il existe des livres avec des nombres différents de pages.

Conclusion :

Bien que l'utilisation d'une clause HAVING sans GROUP BY puisse être pratique dans certains scénarios, il est important de noter que le comportement de telles requêtes n'est pas standardisés et peuvent varier selon les systèmes de bases de données. Pour une compatibilité fiable entre les bases de données, il est recommandé d'utiliser GROUP BY en conjonction avec HAVING lors du filtrage des calculs agrégés.

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