我正在尝试按logintime(desc)对表进行排序并生成行号。我的MySQL查询在我的localhost(我想要的)和托管(未正确排序)上显示不同的结果:
SELECT
@curRow := @curRow + 1 as 'rowno', sortedtable.*
FROM
(SELECT @curRow := 0) indextable
JOIN
(SELECT logins.logintime
FROM logins ORDER BY logins.logintime DESC
) sortedtable
localhost的结果:
托管结果:
两个logintime列都具有相同的列类型“datetime”。为什么主机没有按logintime(desc)正确排序?
编辑:原来MySQL版本是5.5
从5.7开始,它忽略派生表中的ORDER BY。
派生表或视图中的ORDER BY
子查询/视图中的ORDER BY在5.7中的处理方式不同 到5.6:除非外部查询是非聚合的,否则它将被忽略 仅包含一个表引用(即对此派生的引用 表或视图)。如果外部查询本身包含,它也会被忽略 ORDER BY子句。