MySQL: 按两个列的函数排序

7 投票
2 回答
4509 浏览
提问于 2025-04-17 09:47

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

我想做类似于“SELECT * FROM T ORDER BY f(A,B) DESC”这样的查询。

这里的f(A,B)是A和B的线性组合,也就是说f(A,B) = mA + nB,其中m和n是一些数字。

请问正确的语法是什么?

2 个回答

5

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

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

这里的 m 和 n 需要你自己来负责。

13

你有两个选择(至少有这两个):

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中使用。第一种方法即使第二种不行也应该能用。

撰写回答