Maison > base de données > tutoriel mysql > OÙ vs HAVING en SQL : quand utiliser chaque clause ?

OÙ vs HAVING en SQL : quand utiliser chaque clause ?

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

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

Explication détaillée des différences entre les clauses HAVING et WHERE en SQL

En SQL, les mots-clés HAVING et WHERE sont utilisés pour filtrer les données, mais ils ont des fonctions différentes. Les deux sont utilisés pour la sélection conditionnelle, mais leur application dépend de la présence ou de l'absence de la clause GROUP BY.

Clause WHERE

La clause

WHERE est exécutée avant l'opération d'agrégation et sélectionne des lignes spécifiques en fonction de leurs valeurs. Par exemple, la requête suivante récupère les noms de tous les étudiants de plus de 20 ans :

<code class="language-sql">SELECT Name
FROM Students
WHERE Age > 20;</code>
Copier après la connexion

Clause AVOIR

En revanche, la clause HAVING est exécutée après application de la fonction d'agrégation. Il filtre les groupes de lignes en fonction de valeurs agrégées, ce qui est utile dans les scénarios où vous devez examiner les résultats agrégés.

Par exemple, la requête suivante récupère l'âge moyen des étudiants dans chaque ville, puis filtre les résultats pour afficher uniquement les villes où l'âge moyen est supérieur à 25 ans :

<code class="language-sql">SELECT City, AVG(Age) AS AvgAge
FROM Students
GROUP BY City
HAVING AvgAge > 25;</code>
Copier après la connexion

Différences clés

La différence fondamentale entre

HAVING et WHERE est leur temps d'exécution. WHERE filtre les lignes avant l'agrégation, tandis que HAVING filtre les groupes après l'agrégation. Cela signifie que HAVING est utilisé pour vérifier les conditions sur les valeurs agrégées, tandis que WHERE est utilisé pour vérifier les conditions sur les valeurs de lignes individuelles.

Exemple

Considérez le tableau suivant avec des exemples de données :

City Age
Boston 22
Boston 25
New York 28
New York 30
Los Angeles 23
Los Angeles 29

Requêtes utilisant WHERE :

<code class="language-sql">SELECT City, COUNT(*) AS Count
FROM Students
WHERE Age > 25;</code>
Copier après la connexion

Sortie :

City Count
New York 2

Requêtes utilisant HAVING :

<code class="language-sql">SELECT City, COUNT(*) AS Count
FROM Students
GROUP BY City
HAVING COUNT(*) > 1;</code>
Copier après la connexion

Sortie :

City Count
Boston 2
New York 2

Dans cet exemple, la clause WHERE récupère le nombre d'étudiants de plus de 25 ans, tandis que la clause HAVING récupère les villes avec plus de 1 étudiant dans chaque ville.

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