Maison >base de données >tutoriel mysql >Quelle est l'utilité d'avoir dans MySQL
Dans MySQL, la clause have est utilisée pour filtrer diverses données après le regroupement. Elle est généralement utilisée en conjonction avec "group by". Cette instruction compense les lacunes du mot-clé Where qui ne peut pas être utilisé en conjonction avec des fonctions d'agrégation.
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.
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
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;
Base de données de démonstration
Dans ce tutoriel, nous utiliserons l'exemple de base de données RUNOOB.
Voici les données sélectionnées dans la table "Sites Web" :
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Ce qui suit sont les données de la table d'enregistrement d'accès au site Web "access_log" :
mysql> SELECT * FROM access_log; +-----+---------+-------+------------+ | aid | site_id | count | date | +-----+---------+-------+------------+ | 1 | 1 | 45 | 2016-05-10 | | 2 | 3 | 100 | 2016-05-13 | | 3 | 1 | 230 | 2016-05-14 | | 4 | 2 | 10 | 2016-05-14 | | 5 | 5 | 205 | 2016-05-14 | | 6 | 4 | 13 | 2016-05-15 | | 7 | 3 | 220 | 2016-05-15 | | 8 | 5 | 545 | 2016-05-16 | | 9 | 3 | 201 | 2016-05-17 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Instance SQL HAVING
Maintenant, nous voulons trouver des sites Web avec un total de visites supérieur à 200.
Nous utilisons l'instruction SQL suivante :
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log INNER JOIN Websites ON access_log.site_id=Websites.id) GROUP BY Websites.name HAVING SUM(access_log.count) > 200;
Le résultat de l'exécution du SQL ci-dessus est le suivant :
Apprentissage recommandé : Tutoriel vidéo MySQL
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!