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:按两列的函数排序的主要内容,如果未能解决你的问题,请参考以下文章