2012-01-08 51 views
7

Tôi có hai trường số nguyên A và B trong bảng T.MySQL: Sắp xếp theo chức năng của hai cột

tôi muốn làm một cái gì đó như "SELECT * FROM T ORDER BY f(A,B) DESC"

nơi f(A,B) là sự kết hợp tuyến tính của A và B ... tức là f(A,B) = mA + nB, trong đó m và n là các số.

Cú pháp đúng là gì?

Trả lời

12

Bạn có hai lựa chọn (ít nhất):

SELECT (n * A + m * B) AS C, * 
    FROM T 
ORDER BY C DESC; -- or ORDER BY 1 DESC 

Hoặc:

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

Một này hay cách khác - có thể là cả hai - nên làm việc cho bạn trong MySQL. Việc đầu tiên nên làm việc ngay cả khi thứ hai không.

5

Cố gắng giữ cho nó đơn giản, sử dụng như sau:

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

nơi m và n là về trách nhiệm của bạn.

+0

@JonathanLeffler - thanx, quên về asterics 8-) –

Các vấn đề liên quan