求教: mysql 中 select 和 order by 的执行顺序

2020-03-23 11:21:49 +08:00
 ASpiral

一直以为 mysql 中 select 先于 order by 执行,但最近项目中遇到了问题发现并不是这样;
对问题做了下简化:表 t1 中有列 id,列中有 3 行数据[1, 2, 3]

# 输入
select id, @n:=@n+10 rank from t1, (select @n:=0) t2 order by rank desc;
# 输出
+------+------+
| id   | rank |
+------+------+
|    3 |   30 |
|    2 |   20 |
|    1 |   10 |
+------+------+
# 输入
select id, @n:=@n+10 rank from t1, (select @n:=0) t2 order by id desc;
# 输出
+------+------+
| id   | rank |
+------+------+
|    3 |   10 |
|    2 |   20 |
|    1 |   30 |
+------+------+

第一条 sql 按 rank 排序由于 rank 是 select 后才有的所以 select 先于 order by 执行,第二条 sql 按 id 排序结果 order by 先于 select 执行;
感觉有些莫名其妙,select 和 order by 的执行顺序究竟是怎么判断的?

952 次点击
所在节点    问与答
1 条回复
ASpiral
2020-03-24 00:07:18 +08:00
我的提问描述有什么问题吗?怎么都没有大佬回复下…
select 跟 order by 的执行顺序怎么判断?我用中文搜索不出想要的答案啊…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/655294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX