SQL 中 select、from、join、where、group by、having、order by、limit 的执行顺序是什么?

Sherwin.Wei Lv7

SQL 中 select、from、join、where、group by、having、order by、limit 的执行顺序是什么?

回答重点

执行顺序 SQL 子句 说明
1 FROM 确定数据源,执行表连接操作。
2 JOIN 执行连接操作,结合多张表的数据。
3 WHERE 过滤不符合条件的行。
4 GROUP BY 将数据按指定的列分组。
5 HAVING 过滤分组后的数据。
6 SELECT 选择要返回的列。
7 ORDER BY 对查询结果进行排序。
8 LIMIT 限制查询返回的行数。

具体可以参考下图:

image.png

扩展知识

SQL 查询的执行顺序进一步分析

1)FROM(确定数据源)

查询的执行首先从 FROM 子句开始,确定数据的来源(表、视图、连接等)。

2)JOIN(如果有 JOIN 操作)

FROM 子句之后,SQL 引擎会执行连接操作(JOIN),将多张表的数据结合起来。

3)WHERE(过滤行)

接下来,SQL 引擎会对来自 FROMJOIN 的数据进行过滤,保留符合条件的行。**WHERE** 子句执行的是行级别的过滤。

4)GROUP BY(分组数据)

然后,SQL 引擎会按照 GROUP BY 子句中的字段进行分组操作,将数据分为若干组。

5)HAVING(过滤组)

HAVING 子句执行时会对已经分组的数据进行过滤,保留符合条件的组。与 WHERE 子句不同,**HAVING** 是用于过滤分组后的数据。

6)SELECT(选择列)

在经过上述的操作后,SQL 引擎会选择需要的列并进行返回。这个阶段是实际返回查询结果的地方。

7)ORDER BY(排序)

紧接着,SQL 引擎会按照 ORDER BY 子句中指定的列对结果进行排序。

8)LIMIT(限制返回的行数)

最后,**LIMIT** 子句限制查询结果的行数,只返回指定数量的行。

Comments
On this page
SQL 中 select、from、join、where、group by、having、order by、limit 的执行顺序是什么?