MySQL |按计算的 select 值排序

MySQL | Order By computed select value

在 mysql 中是否可以使用计算的 select 值进行排序?例如,我有类似于以下内容的内容:

SELECT members.*, ROUND(formula for finding distance) AS distance
FROM members
ORDER BY distance ASC

但是在执行查询时,我收到一条消息,说明 Column not found: 1054 Unknown column 'distance' in 'order clause'

您不能在 order by 子句中使用别名。但是,您可以只使用相同的表达式(顺便说一句,请注意 order by 是两个词,而不是一个):

SELECT   members.*, ROUND(formula for finding distance) AS distance
FROM     members
ORDER BY ROUND(same formula for finding distance) ASC

尝试这样的事情:

SELECT members.*, ROUND(formula for finding distance) AS distance
FROM members
ORDER BY ROUND(formula for finding distance) ASC

在MySQL中当然可以在ORDER BY中使用别名。这对于距离计算非常典型:

SELECT members.*, ROUND(formula for finding distance) AS distance
FROM members
ORDER BY distance ASC;

大多数数据库都允许这种构造。

这里是 Rextester 演示它的工作原理。