SQL 查询中 ORDER BY 的执行顺序
SQL 查询中 ORDER BY 的执行顺序
在 SQL 查询中,ORDER BY
子句是在 SELECT
子句之后执行的。SQL 查询的逻辑执行顺序如下:
- FROM - 确定数据来源
- WHERE - 过滤行
- GROUP BY - 分组数据
- HAVING - 过滤分组
- SELECT - 选择列
- ORDER BY - 排序结果
- LIMIT/OFFSET - 限制返回行数
这种执行顺序意味着:
- 你可以在
ORDER BY
中使用SELECT
中定义的列别名 ORDER BY
操作的是SELECT
语句处理后的结果集- 聚合函数在
ORDER BY
之前已经计算完成
示例代码:
SELECT customer_name AS name, SUM(order_amount) AS total
FROM orders
WHERE order_date > '2023-01-01'
GROUP BY customer_name
HAVING SUM(order_amount) > 1000
ORDER BY total DESC -- 这里可以使用SELECT中定义的别名"total"
LIMIT 10;
注意:这种执行顺序是逻辑上的,实际数据库引擎可能会优化物理执行计划,但结果会与这种逻辑顺序一致。