Trouver les sources : « Avoir » SQL – actualités – journaux – livres – érudit – JSTOR (septembre 2018) (Savoir quand et comment supprimer ce message modèle)
Une clause HAVING
en SQL spécifie qu’une instruction SELECT
ne doit renvoyer que les lignes dont les valeurs d’agrégat répondent aux conditions spécifiées.
HAVING
et WHERE
sont souvent confondus par les débutants, mais ils servent des objectifs différents. WHERE
est prise en compte à un stade plus précoce de l’exécution d’une requête, en filtrant les lignes lues dans les tables. Si une requête contient GROUP BY
, les données des tables sont regroupées et agrégées. Après l’opération d’agrégation, HAVING
est appliquée, filtrant les lignes qui ne correspondent pas aux conditions spécifiées. Par conséquent, WHERE
s’applique aux données lues dans les tables, et HAVING
ne devrait s’appliquer qu’aux données agrégées, qui ne sont pas connues au stade initial d’une requête.
Pour visualiser la condition actuelle formée par la clause GROUP BY
, on utilise la clause HAVING
.