SQL语句执行/书写顺序

1.执行顺序

  • FROM: 查询从一个或多个表中选择数据。这是查询的基础,确定了数据的来源。
  • WHERE: 在数据源(FROM)中应用条件进行筛选。这个步骤可选,但常用于限制返回的行。
  • GROUP BY: 根据指定的列对数据进行分组,常与聚合函数一起使用。这样可以将数据划分为不同的组。
  • HAVING: 对分组后的数据进行筛选。与WHERE类似,但作用于分组后的结果。
  • SELECT: 选择要从结果集中返回的列,这通常包括聚合函数和其他列的计算。
  • ORDER BY: 对结果进行排序。这一步在SELECT之后,但在数据返回给客户端之前。
  • LIMIT / OFFSET (如果支持): 这些关键字用于限制返回的行数以及返回的起始位置。
  • DISTINCT: 这是一个可选的步骤,用于去重结果集中的行。

2.书写顺序

  • SELECT: 定义要返回的列或计算的表达式。
  • FROM: 指定要查询的数据表或视图。
  • WHERE: 对数据进行筛选,使用条件来限制结果集。
  • GROUP BY: 根据指定的列对数据进行分组。
  • HAVING: 对分组后的数据进行筛选,类似于 WHERE,但作用于分组后的结果。
  • ORDER BY: 对结果进行排序。
Sql语句执行顺序为:

(7)    SELECT

(8)    DISTINCT <select_list>

(1)    FROM <left_table>

(3)    <join_type> JOIN <right_table>

(2)    ON <join_condition>

(4)    WHERE <where_condition>

(5)    GROUP BY <group_by_list>

(6)    HAVING <having_condition>

(9)    ORDER BY <order_by_condition>

(10)   LIMIT <limit_number> 

(7)之后,比如order中,distinct中。

这是因为在SQL执行的时候,WHERE和GROUP语句在字段分类之前就已经执行了,在此期间,别名还没有生效,因此找不到指定别名的字段,报错。
posted @ 2024-03-05 10:22  DawnTraveler  阅读(82)  评论(0编辑  收藏  举报