from ->where->group by -> having->select->distinct->order by ->limit/offset
1.From and JOIN
首先我们进行查询的时候,肯定是先获得一份数据集的,From语句和JOIN被先执行的,就是为了获得数据集的。
2.WHERE
一旦数据集给拿到了,WHERE限制条件会被用到某些行上,并把不满足的行给抛弃掉。并且,这能够用到各种数据类型中
3.GROUP BY
WHERE条件限定之后,接下来就是GROUP BY语句了,这一语句会根据某一字段进行分组,并对各个组进行求聚合。现在我们再来想想刚刚提到的代码错在哪里了呢
想想看,我们先进行的是FROM,紧接着是WHERE,然后才是GROUP BY。所以上面的语句就是错在了WHERE 语句在执行的时候,GROUP BY语句还没有开始,那时聚合值sum(area)还是未知的。那正确的写法呢?还请接着往下看。
4.HAVING
having语句在SQL中的主要作用与Where语句作用是相同的,但是having是过滤聚合值,其实上面的正确写法是这样的
5.SELECT
在经过上面的执行之后,终于到了select语句,但是别慌,下面还有呢。
6.DISTINCT
对于剩下的行,Distinct用来去除重复行,只保留唯一的。
7.ORDER BY
此语句用来对select后的结果,进行排序,升序或者是降序。
8.LIMIT/OFFSET
用来限定返回的行数
总结:
执行顺序
|
语句
|
功能
|
1
|
from
|
获取基础数据
|
2
|
where
|
过滤基础数据
|
3
|
group by
|
聚合基础数据
|
4
|
having
|
过滤聚合后的数据
|
5
|
select
|
返回最终的数据
|
6
|
distinct
|
去重最终的数据
|
7
|
order by
|
排序最终的数据
|
8
|
limit/offset
|
限定最终数据的返回行
|