查询语句模版
SELECT DISTINCT column, AGG_FUNC(column_or_expression), …
FROM mytable
JOIN another_table
ON mytable.column = another_table.column
WHERE constraint_expression
GROUP BY column
HAVING constraint_expression
ORDER BY column ASC/DESC
LIMIT count OFFSET COUNT;
使用时的顺序
子句 |
说明 |
是否必须使用 |
SELECT |
要返回的列或表达式 |
是 |
FROM |
从中检索数据的表 |
仅在从表中选择数据时使用 |
WHERE |
行级过滤 |
否 |
GROUP BY |
分组说明 |
仅在按组计算聚集时使用 |
HAVING |
组级过滤 |
否 |
ORDER BY |
输出排序顺序 |
否 |
LIMIT |
要检索的行数 |
否 |
执行时的顺序
关键字 |
FROM、JOIN 和 ON |
WHERE |
GROUP BY |
HAVING |
SELECT |
DISTINCT |
ORDER BY |
LIMIT 和 OFFSET |
注:实际的执行顺序未必是这样,因为数据库引擎会进行优化。
参考
Order of execution of a Query
SQL queries don’t start with SELECT