MySQL:按两列的函数排序

Posted

技术标签:

【中文标题】MySQL:按两列的函数排序【英文标题】:MySQL: Order by a function of two columns 【发布时间】: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 是数字。

什么是正确的语法?

【问题讨论】:

【参考方案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 中为您工作。第一个应该可以工作,即使第二个不行。

【讨论】:

以上是关于MySQL:按两列的函数排序的主要内容,如果未能解决你的问题,请参考以下文章

按两列分组并获得第三列的最大值

按两列排序,为啥不先分组呢?

是否可以在 mySql 中插入作为其他两列的数学函数的列?

PySpark - 如何将列表传递给用户定义函数?

按两列对数据框进行排序(有条件)[重复]

如何在c#中按两列对DataTable进行排序