Maison >base de données >tutoriel mysql >HAVING vs WHERE en SQL : quand utiliser chaque clause pour le filtrage ?

HAVING vs WHERE en SQL : quand utiliser chaque clause pour le filtrage ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-14 17:06:46169parcourir

HAVING vs. WHERE in SQL: When to Use Each Clause for Filtering?

Différences et applications des clauses HAVING et WHERE en SQL

Il existe une différence clé entre les clauses HAVING et WHERE lors de l'utilisation de fonctions d'agrégation et de requêtes SQL. Plongeons dans leurs différences pour améliorer vos compétences SQL.

HAVING : filtrage après agrégation

HAVING est utilisé pour appliquer une condition sur une valeur agrégée une fois l'opération d'agrégation terminée. En d’autres termes, il agit comme un filtre post-agrégation, vérifiant si le résultat de l’agrégation satisfait certaines conditions.

Par exemple, la requête suivante récupère les villes du Massachusetts (MA) et leur nombre d'adresses correspondant :

<code class="language-sql">SELECT City, COUNT(1) AS CNT
FROM Address
WHERE State = 'MA'
GROUP BY City;</code>

Pour affiner davantage les résultats et afficher uniquement les villes avec plus de cinq adresses, utilisez la clause HAVING :

<code class="language-sql">SELECT City, COUNT(1) AS CNT
FROM Address
WHERE State = 'MA'
GROUP BY City
HAVING CNT > 5;</code>

OÙ : Filtrer avant agrégation

Contrairement à HAVING, WHERE est utilisé pour le filtrage avant l'agrégation. Il évalue les conditions avant le processus d'agrégation. Cela signifie que seuls les enregistrements qui satisfont à la condition WHERE spécifiée seront inclus dans l'agrégation.

En continuant avec l'exemple précédent, vous pouvez utiliser la clause WHERE pour limiter la sélection aux villes du Massachusetts avant de calculer les adresses :

<code class="language-sql">SELECT City, COUNT(1) AS CNT
FROM Address
WHERE State = 'MA' AND City = 'Boston'
GROUP BY City;</code>

Comparaison des fonctionnalités clés

特性 HAVING WHERE
时间 聚合之后 聚合之前
目的 聚合后过滤 聚合前过滤
作用范围 应用于聚合值 应用于单个记录

Résumé

HAVING et WHERE jouent tous deux un rôle essentiel dans l'optimisation des requêtes SQL. En comprenant leurs différentes fonctions et temps d'exécution, vous pouvez affiner efficacement vos résultats et améliorer vos capacités d'analyse de données.

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