【问题标题】:MySQL | Order By computed select valueMySQL |按计算的选择值排序
【发布时间】:2017-10-10 16:58:58
【问题描述】:

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

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'

【问题讨论】:

  • MySQL 还是 MS Sql Server?除非别名中“距离”的拼写和 ORDER BY 不匹配,否则这应该在 MySQL 中有效。

标签: mysql sql sql-order-by


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    试试这样的:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • MySQL 几乎允许在任何地方使用 SELECT 字段的别名,但 WHERE 子句(和其他 SELECT 字段的表达式)除外。
      猜你喜欢
      • 2010-12-21
      • 2016-01-08
      • 2020-06-12
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多