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!