Maison > base de données > tutoriel mysql > Comment utiliser le mot-clé mysql ayant

Comment utiliser le mot-clé mysql ayant

青灯夜游
Libérer: 2022-02-24 19:06:05
original
16006 Les gens l'ont consulté

Dans MySQL, le mot-clé have doit être utilisé avec l'instruction SELECT pour filtrer les données groupées. La syntaxe est "SELECT {*|field column name} FROM data table name HAVING query condition;".

Comment utiliser le mot-clé mysql ayant

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

MySQL HAVING : Filtrer le regroupement

Dans MySQL, vous pouvez utiliser le mot-clé HAVING pour filtrer les données groupées.

Le format de syntaxe pour utiliser le mot-clé HAVING est le suivant :

HAVING 查询条件;
Copier après la connexion

Le mot-clé HAVING et le mot-clé WHERE peuvent être utilisés pour filtrer les données, et HAVING prend en charge tous les opérateurs et la syntaxe du mot-clé WHERE.

Mais il existe également les différences suivantes entre les mots-clés WHERE et HAVING :

  • Généralement, WHERE est utilisé pour filtrer les lignes de données, tandis que HAVING est utilisé pour filtrer les groupes.

  • Les fonctions d'agrégation ne peuvent pas être utilisées dans les conditions de requête WHERE, mais les fonctions d'agrégation peuvent être utilisées dans les conditions de requête HAVING.

  • WHERE filtre avant le regroupement des données, tout en HAVING filtre après le regroupement des données.

  • WHERE filtre les fichiers de base de données, tandis que HAVING filtre les résultats de la requête. En d’autres termes, WHERE filtre directement en fonction des champs de la table de données, tandis que HAVING filtre en fonction des champs interrogés précédemment.

  • WHERE les conditions de requête ne peuvent pas utiliser d'alias de champ, mais les conditions de requête HAVING peuvent utiliser des alias de champ.

Les exemples suivants vous donneront une compréhension plus intuitive des similitudes et des différences entre les mots-clés WHERE et HAVING.

Exemple 1

Utilisez respectivement les mots-clés HAVING et WHERE pour interroger les noms, le sexe et la taille des étudiants dont la taille est supérieure à 150 dans la table tb_students_info. Les instructions SQL et les résultats d'exécution sont les suivants.

mysql> SELECT name,sex,height FROM tb_students_info 
    -> HAVING height>150;
+--------+------+--------+
| name   | sex  | height |
+--------+------+--------+
| Dany   | 男   |    160 |
| Green  | 男   |    158 |
| Henry  | 女   |    185 |
| Jane   | 男   |    162 |
| Jim    | 女   |    175 |
| John   | 女   |    172 |
| Lily   | 男   |    165 |
| Susan  | 男   |    170 |
| Thomas | 女   |    178 |
| Tom    | 女   |    165 |
+--------+------+--------+
10 rows in set (0.00 sec)

mysql> SELECT name,sex,height FROM tb_students_info 
    -> WHERE height>150;
+--------+------+--------+
| name   | sex  | height |
+--------+------+--------+
| Dany   | 男   |    160 |
| Green  | 男   |    158 |
| Henry  | 女   |    185 |
| Jane   | 男   |    162 |
| Jim    | 女   |    175 |
| John   | 女   |    172 |
| Lily   | 男   |    165 |
| Susan  | 男   |    170 |
| Thomas | 女   |    178 |
| Tom    | 女   |    165 |
+--------+------+--------+
10 rows in set (0.00 sec)
Copier après la connexion

Dans l'exemple ci-dessus, comme le champ de hauteur a été interrogé après le mot-clé SELECT, HAVING et WHERE peuvent être utilisés. Cependant, si le champ height n'est pas interrogé après le mot-clé SELECT, MySQL signalera une erreur.

Exemple 2

Utilisez les mots-clés HAVING et WHERE pour interroger les noms et sexes des étudiants dont la taille est supérieure à 150 dans la table tb_students_info (par rapport à l'exemple 1, cette fois le champ hauteur n'est pas interrogé). Les instructions SQL et les résultats d'exécution sont les suivants.

mysql> SELECT name,sex FROM tb_students_info 
    -> WHERE height>150;
+--------+------+
| name   | sex  |
+--------+------+
| Dany   | 男   |
| Green  | 男   |
| Henry  | 女   |
| Jane   | 男   |
| Jim    | 女   |
| John   | 女   |
| Lily   | 男   |
| Susan  | 男   |
| Thomas | 女   |
| Tom    | 女   |
+--------+------+

10 rows in set (0.00 sec)
mysql> SELECT name,sex FROM tb_students_info HAVING height>150;
ERROR 1054 (42S22): Unknown column 'height' in 'having clause'
Copier après la connexion

Les résultats montrent que si le champ de hauteur utilisé dans la condition de requête HAVING n'est pas interrogé après le mot-clé SELECT, MySQL affichera un message d'erreur : La colonne "hauteur" dans la "clause avoir" est inconnue"

Exemple 3

Regroupez les données dans la table tb_students_info en fonction du champ de hauteur, et utilisez les mots-clés HAVING et WHERE pour interroger les noms, sexes et tailles des étudiants dont la taille moyenne est supérieure à 170. Le SQL. L'instruction et les résultats d'exécution sont les suivants

mysql> SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info 
    -> GROUP BY height 
    -> HAVING AVG(height)>170;
+--------------------+------+--------+
| GROUP_CONCAT(name) | sex  | height |
+--------------------+------+--------+
| John               | 女   |    172 |
| Jim                | 女   |    175 |
| Thomas             | 女   |    178 |
| Henry              | 女   |    185 |
+--------------------+------+--------+
4 rows in set (0.00 sec)

mysql> SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info WHERE AVG(height)>170 GROUP BY height;
ERROR 1111 (HY000): Invalid use of group function
Copier après la connexion

Il ressort des résultats que si une fonction d'agrégation est utilisée dans la condition de requête WHERE, MySQL affichera un message d'erreur : Utilisation non valide de la fonction de groupe

[Recommandation associée : 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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal