FROM 子句:
-
从指定的数据源(表或视图)获取数据。
-
如果有JOIN操作,会在此步骤进行表的连接操作。
WHERE 子句:
-
对FROM子句返回的数据进行过滤,保留满足条件的行。
GROUP BY 子句:
-
将数据根据一个或多个字段进行分组。
HAVING 子句:
-
对分组后的数据进行过滤,保留满足条件的组。
SELECT 子句:
-
从过滤后的数据或分组数据中选择需要的列或表达式。
DISTINCT 子句(如果有的话):
-
去除SELECT子句返回的结果中的重复行。
ORDER BY 子句:
-
对SELECT子句返回的结果进行排序。
LIMIT 子句(或其他限制返回行数的子句,如TOP、FETCH等)
-
限制返回的行数。
例如:
SELECT DISTINCT column1, aggregate_function(column2)
FROM table1
JOIN table2 ON table1.id = table2.id
WHERE condition
GROUP BY column1
HAVING condition
ORDER BY column1
LIMIT 10;
这个查询的执行顺序如下:
-
FROM table1 JOIN table2 ON table1.id = table2.id:先从
table1
和table2
中获取数据,并根据指定的条件进行连接。 -
WHERE condition:对连接后的数据进行过滤,保留满足
condition
的行。 -
GROUP BY column1:将过滤后的数据根据
column1
进行分组。 -
HAVING condition:对分组后的数据进行过滤,保留满足
condition
的组。 -
SELECT DISTINCT column1, aggregate_function(column2):选择所需的列和聚合函数,并去除重复的行。
-
ORDER BY column1:对选择的结果进行排序。
-
LIMIT 10:限制返回的行数为10行。