mysql group by having 子句

Posted hero_th

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql group by having 子句相关的知识,希望对你有一定的参考价值。

group by

先来看一个例子,理解一下group by 的用法 和 功能
例如这张表
然后执行

select Email, count(Email) as num
from Person
group by Email;

效果如下

如果接下来 你还不能理解

执行sql

SELECT name FROM test GROUP BY name

构建一个虚拟表

group by 多个字段该怎么理解呢:如group by name,number,我们可以把name和number 看成一个整体字段,以他们整体来进行分组


如执行

select name,sum(id) from test group by name,number

效果如图

注意 :

  • group by 子句中的分组依据列必须是表中存在的列名 ,不能使用 as 子句指派的列别名。
  • 带有 group by 子句的select 语句的查询列表中只能出现分组依据列,因为,因为分组后的每个组只返回一行数据。

having

  • having 子句 用于对分组后的结果再进行筛选 ,它的功能有点儿像where 子句,但是它是专门用于组 而不是记录。
  • 在having 子句中可以使用统计函数,而在where 子句中不能。
  • having 子句通常跟group by 子句一起使用

附力扣原题,以助理解

select Email
from Person
group by Email
having count(Email) > 1;

以上是关于mysql group by having 子句的主要内容,如果未能解决你的问题,请参考以下文章

mysql group by 分组及having 过滤分组

group by having用法举例

Mysql中Group By使用Having语句配合查询

having是否依赖于group by

SQL之group by 和 having

使用嵌套的 group-by/having 子句进行复杂连接?