查询语句模版
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