SQL HAVINGclause
HAVING clause
La raison de l'ajout de la clause HAVING dans SQL est que le mot clé WHERE ne peut pas être utilisé avec des fonctions d'agrégation.
La clause HAVING nous permet de filtrer chaque groupe de données après regroupement.
Syntaxe SQL HAVING
FROM nom_table
WHERE nom_colonne valeur de l'opérateur
GROUP BY nom_colonne
HAVING fonction_agrégat (nom_colonne ) valeur de l'opérateur ;
Base de données de démonstration
Dans ce tutoriel, nous utiliserons l'exemple de base de données php.
Voici les données sélectionnées dans le tableau "Sites Web" :
| identifiant | URL --------+-------+---------+
| 1 | Google https://www.google.cm/ 1 | |
| 2 | Taobao | https://www.taobao.com/ | 13 | CN |
| php Site Web chinois |
| Weibo | http://weibo.com/ |
| | http://stackoverflow.com/ | 0 |
+----+--------------+---------- ---------------+------+---------+
Voici les données de la table d'enregistrement d'accès au site Web "access_log" :
+-----+------ --- +-------+------------+
| aide site_id | compte date |
+-----+--- --- ---+-------+------------+
| 1 | 45 | 2016-05-10 |
| 3 | 100 | 2016-05-13 |
| 3 | 2016-05-14 |
| 4 | 2016-05-14 |
| | 2016-05-14 |
| 6 | 13 | 2016-05-15 |
| -05 -16 |
| 9 | 201 | 2016-05-17 |
+-----+---------+------+- -- ---------+
9 lignes dans l'ensemble (0,00 sec)
Instance SQL HAVINGMaintenant, nous voulons trouver le visites totales Plus de 200 sites Web. Nous utilisons l'instruction SQL suivante :
ON access_log.site_id=Websites.id)
GROUPE PAR Websites.name
HAVING SUM(access_log.count) > 200;

ON Websites.id=access_log.site_id
OÙ Websites.alexa < 200
GROUPE PAR Websites.name
HAVING SOMME(access_log.count) > 200;
Le résultat de l'exécution du SQL ci-dessus est le suivant :













![Premiers pas avec le développement pratique PHP : création rapide de PHP [Small Business Forum]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)









