- from 子句组装来自不同数据源的数据
- where 子句基于指定的条件对记录行进行筛选;
- group by 子句将数据划分为多个分组;
- 使用聚集函数进行计算;
- 使用 having 子句筛选分组;
- 计算所有的表达式;
- 使用 order by 对结果集进行排序;
- select 集合输出。
关于 having 和 where 的区别,having 除了可以执行 where 中的所有条件,还可以执行聚合函数进行判断,例如下面语句:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
两点
-
GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面 -
where 子句的作用是在对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用 where 条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用 having 条件显示特定的组,也可以使用多个分组标准进行分组。
having 不一定要搭配group by
使用,也可以单独使用,只是比where
多一个可以使用聚合函数作为条件,举例如下
select * from t_test having id=1;
// 这里就不能用where
select gender, count(gender) from t_test group by gender having count(gender)>5;
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于