2010-03-03 59 views
7

是否可以對mySQL中的2行進行排序?例如,我有2行,lpap我試圖做這樣的事情:MySQL在計算上排序

SELECT * from myTbl WHERE 1 ORDER BY (lp/ap) 

哪一個不是拋出一個錯誤,但它也並不是由計算的結果進行排序。有沒有辦法做到這一點,或者我必須將lp/ap存儲在數據庫中?

+0

'lp'和'ap'是行還是列? – 2010-03-03 08:14:46

回答

17

是的,這是可能的,而且它的工作。看看下面的測試:

CREATE TABLE a(a INT, b INT); 

INSERT INTO a VALUES (1, 1); 
INSERT INTO a VALUES (1, 2); 
INSERT INTO a VALUES (1, 3); 
INSERT INTO a VALUES (1, 4); 
INSERT INTO a VALUES (1, 5); 
INSERT INTO a VALUES (1, 6); 
INSERT INTO a VALUES (2, 1); 
INSERT INTO a VALUES (2, 2); 
INSERT INTO a VALUES (2, 3); 
INSERT INTO a VALUES (2, 4); 
INSERT INTO a VALUES (2, 5); 
INSERT INTO a VALUES (2, 6); 

SELECT a.a, a.b, (a/b) FROM a ORDER BY (a/b); 

+------+------+--------+ 
| a | b | (a/b) | 
+------+------+--------+ 
| 1 | 6 | 0.1667 | 
| 1 | 5 | 0.2000 | 
| 1 | 4 | 0.2500 | 
| 2 | 6 | 0.3333 | 
| 1 | 3 | 0.3333 | 
| 2 | 5 | 0.4000 | 
| 1 | 2 | 0.5000 | 
| 2 | 4 | 0.5000 | 
| 2 | 3 | 0.6667 | 
| 2 | 2 | 1.0000 | 
| 1 | 1 | 1.0000 | 
| 2 | 1 | 2.0000 | 
+------+------+--------+ 

SELECT a.a, a.b FROM a ORDER BY (a/b);會返回相同的結果。

+0

謝謝,原來問題不在我的發言中,而是完全在其他地方,現在我覺得自己像個白癡。但很高興知道我的猜測結果是正確的。 – Stomped 2010-03-03 08:30:21

9
SELECT *, (lp/ap) AS calculation from myTbl ORDER BY calculation 

如果(lp/ap)有效,這應該有效。

2

你可能有更多的機會做

SELECT *, (lp/ap) as n from myTbl ORDER BY n