首页 > 解决方案 > 如何理解 SELECT 和 ORDER BY 的执行顺序

问题描述

我用谷歌搜索了这个问题,所有答案都说 SELECT 是在 ORDER BY 之前执行的。但是下面的简单示例(使用 MySQL 和 sakila 数据库)给出了正确的排序结果。显然,SELECT 之后不会执行 ORDER BY,因为 SELECT 没有选择 customer_id。谁能解释发生了什么?

SELECT rental_date FROM rental ORDER BY customer_id LIMIT 10;

标签: mysqlsqlselectsql-order-by

解决方案


SQL 中根本没有执行顺序。

SQL 是一种声明性语言,而不是命令性语言。您正试图在 SQL 和命令式语言(如 Java、Python 或 C#)之间建立一种平行关系……但没有。

每个 SQL 引擎都可以自由地重写/改写您的查询(随意),以任何顺序执行,甚至随着时间的推移更改其策略,只要它根据约束结果集的谓词返回数据。

而已。不多也不少。


推荐阅读