【问题标题】:MySQL: Order by a function of two columnsMySQL:按两列的函数排序
【发布时间】:2012-02-05 05:55:45
【问题描述】:

我在表 T 中有两个整数字段 A 和 B。

我想做类似“SELECT * FROM T ORDER BY f(A,B) DESC”的事情

其中f(A,B) 是 A 和 B 的线性组合...即f(A,B) = mA + nB,其中 m 和 n 是数字。

什么是正确的语法?

【问题讨论】:

    标签: php python mysql sql


    【解决方案1】:

    尽量保持简单,使用以下内容:

    SELECT * FROM T ORDER BY (m * A + n * B) DESC
    

    其中 m 和 n 由您负责。

    【讨论】:

    • @JonathanLeffler -thanx,忘了星号 8-)
    【解决方案2】:

    你有两个选择(至少):

    SELECT (n * A + m * B) AS C, *
      FROM T
     ORDER BY C DESC; -- or ORDER BY 1 DESC
    

    或者:

    SELECT *
      FROM T
     ORDER BY (n * A + m * B) DESC;
    

    一个或另一个——可能两者都适用——应该在 MySQL 中为您工作。第一个应该可以工作,即使第二个不行。

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 2023-03-22
      • 2010-10-05
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多