Maison  >  Article  >  base de données  >  Quelle est l'utilité d'avoir dans MySQL

Quelle est l'utilité d'avoir dans MySQL

WBOY
WBOYoriginal
2022-03-01 15:24:4229982parcourir

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.

Quelle est l'utilité d'avoir dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.

À quoi sert have dans MySQL ?

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 :

Quelle est lutilité davoir dans MySQL

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!

Déclaration:
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