【发布时间】:2020-11-01 20:40:09
【问题描述】:
SET @rowse := -1;
SELECT
@rowse := @rowse + 1 AS rowses ,
STATION.LAT_N AS LAT_N
FROM
STATION
ORDER BY STATION.LAT_N
变量的求值顺序和排序依据是什么。
1. 是否会先执行 order by,然后再执行 @rowse := @rowse + 1 的评估?因此导致排序的 LAT_N 并且所有行都是连续的。
- 或首先评估 @rowse := @rowse + 1 并将其分配给每一行,然后在 station.lat_n 上进行排序,从而导致 LAT_N 排序,但可能出现非连续行。
在 MySQL 中发生了第 1 次,但我无法理解在 SELECT 之后根据 MANUAL 评估 ORDER BY 的时间,那么情况 1 是如何发生的。 非常感谢任何帮助。
【问题讨论】: