HAVING 和 WHERE 的异同

HAVING 和 WHERE 的异同

相同:

  • 都是对数据过滤,只保留有效的数据;
  • where 和 having 一样,都不允许出现字段的别名;
  • 只允许出现最原始的字段的名字。

不同:

  • where 是对原始的记录过滤,having 是对分组之后的记录过滤;
  • where 必须的写在 having 的前面,顺序不可颠倒否则运行出错。

示例查询

查询学生信息表,按性别分组,统计人数大于 9 的记录:

SELECT s.性别 as sex,COUNT(1) as total
  FROM [学生成绩管理系统].[dbo].[学生信息] as s
  group by s.性别 
  having COUNT(1) > 9Code language: JavaScript (javascript)

查询成绩信息表,按学生编号分组,筛选总分小于 300 的记录:

SELECT c.学生编号,sum(c.分数) as 总分
  FROM [学生成绩管理系统].[dbo].[成绩信息] as c
  group by c.学生编号
  having sum(c.分数) <300Code language: CSS (css)

查询成绩信息表,按学生编号分组,筛选总分小于 300 或大于 400 的记录:

SELECT c.学生编号,sum(c.分数) as 总分
  FROM [学生成绩管理系统].[dbo].[成绩信息] as c
  group by c.学生编号
  having sum(c.分数) <300 or SUM(c.分数)>400Code language: CSS (css)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注