Sqlserver中top和order by的执行顺序

昨天纠结了他们的执行顺序的问题,于是上级找了个表实验了下。

Sqlserver中top和order by的执行顺序
这是不带order by的top查询,出现的结果都是无序的。

Sqlserver中top和order by的执行顺序
这次带上了order by 可以看到出来的结果都是有序排列的了。

昨天困扰我的是,select语句在order by 之前执行,那么为什么在select 中的top语句执行在order by 之后。
为此我又写了个查询,来验证他们的执行顺序。

Sqlserver中top和order by的执行顺序

我在select 中对列取了个别名,结果order by 中能识别出这个别名。说明oder by 在select之后执行。
结合上面的top 和order by的执行顺序可以得出完整的执行顺序是:seletc->order by ->top。