Maison > base de données > tutoriel mysql > OÙ et HAVING en SQL : quelle est la principale différence ?

OÙ et HAVING en SQL : quelle est la principale différence ?

Patricia Arquette
Libérer: 2025-01-14 17:17:44
original
402 Les gens l'ont consulté

WHERE vs. HAVING in SQL: What's the Key Difference?

Différences entre les clauses WHERE et HAVING dans SQL : un aperçu complet

Dans le monde de SQL, les clauses WHERE et HAVING jouent un rôle essentiel dans le filtrage et la sélection des données. Il existe cependant une différence cruciale entre ces deux clauses qui prête souvent à confusion. Explorons la différence entre OÙ et DEVANT pour dissiper cette ambiguïté.

OÙ et AVOIR : une métaphore

Imaginez un supermarché et vous voulez acheter des pommes. La clause WHERE peut être assimilée à l’entrée d’un magasin, où vous fixez des conditions pour affiner votre sélection initiale. Par exemple, WHERE Color = 'Green' garantira que vous ne tenez compte que des pommes vertes.

En revanche, la clause HAVING est comme le contrôle qualité que vous effectuez après la cueillette des pommes. Vous pouvez vérifier que le nombre de pommes que vous avez sélectionnées dépasse dix en spécifiant HAVING Count(Apples) >

Différence clé : Agrégation

La différence fondamentale entre WHERE et HAVING est leur relation avec les fonctions d'agrégation. WHERE fonctionne avant l'agrégation, tandis que HAVING fonctionne après l'agrégation.

Exemple avec agrégation

Considérez la requête suivante :

<code class="language-sql">SELECT City, COUNT(1) AS TotalAddresses
FROM Address
WHERE State = 'MA'
GROUP BY City
HAVING COUNT(1) > 5</code>
Copier après la connexion

Dans ce cas, WHERE limite les lignes à celles avec State = 'MA' avant de les regrouper par Ville. HAVING vérifie ensuite si chaque ville possède plus de cinq adresses. Par conséquent, la requête renvoie les villes du Massachusetts comportant plus de cinq adresses.

Où OÙ et HAVING se chevauchent

Lorsque GROUP BY n'est pas utilisé, HAVING se comporte comme WHERE. Cela peut prêter à confusion, comme le montre l'exemple suivant :

<code class="language-sql">SELECT City, COUNT(1) AS TotalAddresses
FROM Address
WHERE State = 'MA'
HAVING COUNT(1) > 5</code>
Copier après la connexion

Sans GROUP BY, HAVING se comporte comme une clause WHERE, excluant les villes du Massachusetts avec moins ou égales à cinq adresses de l'ensemble de résultats.

Conclusion

Comprendre la différence entre WHERE et HAVING est essentiel à l'écriture efficace de requêtes SQL. En appliquant ces clauses de manière appropriée, vous pouvez affiner vos sélections de données et effectuer des analyses de données complexes. N'oubliez pas que WHERE fonctionne avant l'agrégation, tandis que HAVING vérifie la condition après l'agrégation.

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