2012-01-08 75 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