2012-01-08 70 views
7

我在表T中有两个整数字段A和B.MySQL:通过两列函数排序

我想要做的事,如 “SELECT * FROM T ORDER BY f(A,B) DESC

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

什么是正确的语法?

回答

12

你有两个选择(至少):

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为你工作。第一个应该工作,即使第二个不应该。

5

尽量保持简单,使用以下命令:

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

其中m和n是你的责任。

+0

@JonathanLeffler - thanx,忘记了星号8) – 2012-01-08 06:53:37