广告
返回顶部
首页 > 资讯 > 数据库 >mysql的having关键字如何用
  • 479
分享到

mysql的having关键字如何用

2024-04-02 19:04:59 479人浏览 独家记忆
摘要

这篇文章主要讲解了“Mysql的having关键字如何用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的having关键字如何

这篇文章主要讲解了“Mysql的having关键字如何用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的having关键字如何用”吧!

在mysql中,having关键字需要和SELECT语句一起使用,用于对分组后的数据进行过滤,语法“SELECT {*|字段列名} FROM 数据表名 HAVING 查询条件;”。

mysql的having关键字如何用

教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

MySQL HAVING:过滤分组

在 MySQL 中,可以使用 HAVING 关键字对分组后的数据进行过滤。

使用 HAVING 关键字的语法格式如下:

HAVING 查询条件;

HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法。

但是 WHERE 和 HAVING 关键字也存在以下几点差异:

  • 一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。

  • WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。

  • WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。

  • WHERE 针对数据库文件进行过滤,而 HAVING 针对查询结果进行过滤。也就是说,WHERE 根据数据表中的字段直接进行过滤,而 HAVING 是根据前面已经查询出的字段进行过滤。

  • WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名。

下面通过实例让大家更直观的了解 WHERE 和 HAVING 关键字的相同点和不同点。

例 1

分别使用 HAVING 和 WHERE 关键字查询出 tb_students_info 表中身高大于 150 的学生姓名,性别和身高。SQL 语句和运行结果如下。

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)

上述实例中,因为在 SELECT 关键字后已经查询出了 height 字段,所以 HAVING 和 WHERE 都可以使用。但是如果 SELECT 关键字后没有查询出 height 字段,MySQL 就会报错。

例 2

使用 HAVING 和 WHERE 关键字分别查询出 tb_students_info 表中身高大于 150 的学生姓名和性别(与例 1 相比,这次没有查询 height 字段)。SQL 语句和运行结果如下。

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'

由结果可以看出,如果 SELECT 关键字后没有查询出 HAVING 查询条件中使用的 height 字段,MySQL 会提示错误信息:“having子句”中的列“height”未知”。

例 3

根据 height 字段对 tb_students_info 表中的数据进行分组,并使用 HAVING 和 WHERE 关键字分别查询出分组后平均身高大于 170 的学生姓名、性别和身高。SQL 语句和运行结果如下。

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

由结果可以看出,如果在 WHERE 查询条件中使用聚合函数,MySQL 会提示错误信息:无效使用组函数。

感谢各位的阅读,以上就是“mysql的having关键字如何用”的内容了,经过本文的学习后,相信大家对mysql的having关键字如何用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: mysql的having关键字如何用

本文链接: https://www.lsjlt.com/news/72339.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql的having关键字如何用
    这篇文章主要讲解了“mysql的having关键字如何用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的having关键字如何...
    99+
    2022-10-19
  • MySQL having关键字详解、与where的区别
    1、having关键字概览 1.1、作用 对查询的数据进行筛选 1.2、having关键字产生的原因 使用where对查询的数据进行筛选时,where子句中无法使用聚合函数,所以引出havin ...
    99+
    2023-10-25
    mysql 数据库 java
  • mysql中如何使用having语句
    这篇文章将为大家详细讲解有关mysql中如何使用having语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。说明用于过滤group by语句返回的记录表,通常与group by联合使用。hav...
    99+
    2023-06-20
  • 如何使用SQL中的having
    如何使用SQL中的having?针对这个问题,今天小编总结这篇有关having的文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。“having”是“group ...
    99+
    2022-10-18
  • mysql中的where关键字如何使用
    这篇文章给大家分享的是有关mysql中的where关键字如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在mysql中,wher&#...
    99+
    2022-10-19
  • Mysql子查询关键字如何使用
    本文小编为大家详细介绍“Mysql子查询关键字如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mysql子查询关键字如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. all1.1 格式1.2 特...
    99+
    2023-07-02
  • mysql中left join关键字的使用
    本篇文章给大家分享的是有关mysql中left join关键字的使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。left join关键字LE...
    99+
    2022-10-18
  • mysql的index关键字怎么使用
    这篇文章主要讲解了“mysql的index关键字怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的index关键字怎么使用”吧! ...
    99+
    2022-10-19
  • 如何理解MySQL 5.7中的关键字和保留字
    如何理解MySQL 5.7中的关键字和保留字,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 最近在将数据从O...
    99+
    2022-10-19
  • 如何使用javascript的关键字
    这篇文章主要介绍“如何使用javascript的关键字”,在日常操作中,相信很多人在如何使用javascript的关键字问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用...
    99+
    2022-10-19
  • MySQL中ESCAPE关键字的用法详解
    MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。 MySQL中,转义字符以“\”开头,编程中常见的转义字符,在M...
    99+
    2022-05-30
    MySQL ESCAPE关键字 MySQL ESCAPE
  • Replace关键字如何使用
    本篇文章为大家展示了Replace关键字如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在sql server中Replace关键字主要是用来将字符...
    99+
    2022-10-18
  • Golang的关键字defer如何使用
    今天小编给大家分享一下Golang的关键字defer如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。核心思想在defe...
    99+
    2023-07-02
  • 如何使用Java的super关键字
    这篇文章给大家分享的是有关如何使用Java的super关键字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java的super关键字当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题...
    99+
    2023-06-15
  • python not关键字如何使用
    本篇内容介绍了“python not关键字如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、not关键词可以反转一个布尔值。>...
    99+
    2023-06-30
  • Java中的final关键字如何使用
    这篇文章主要讲解了“Java中的final关键字如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的final关键字如何使用”吧!一、final概述子类可以在父类的基础上改写父...
    99+
    2023-07-02
  • 如何使用Java中的Super关键字
    本篇内容主要讲解“如何使用Java中的Super关键字”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Java中的Super关键字”吧!一、重写父类方法什么是重写父类方法在继承关系中,子类...
    99+
    2023-06-15
  • Mysql子查询关键字的使用方式(exists)
    目录1. all1.1 格式1.2 特点 1.3 操作2. any(some)1.1 格式1.2 特点1.3 操作3. in1.1 格式1.2 特点1.3 操作4. exist1.1 格式1.2 特点1.3 操...
    99+
    2022-07-07
    Mysql 查询关键字 Mysql关键字 Mysql子查询关键字 Mysql 关键字exists
  • ASP.NET中static关键字如何使用
    ASP.NET中static关键字如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。静态变量当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对...
    99+
    2023-06-17
  • C++ 中如何使用static关键字
    C++ 中如何使用static关键字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、静态全局变量在全局变量前,加上C++ static关键字,该变量就被定义成...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作