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)
Previous: 查询中使用like进行匹配
Next: LEN 函数