2010-03-03 2 views
7

Можно ли сортировать по расчёту 2 строк в mySQL? Например, у меня есть 2 строки, lp и ap Я пытаюсь сделать что-то вроде этого:MySQL сортировать по расчёту

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

Что не бросали ошибки, но его также не сортировочную по результатам этого расчета. Есть ли способ сделать это, или мне нужно хранить lp/ap в базе данных?

+0

'lp' и' ap' - это строки или столбцы? –

ответ

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

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

Это должно сделать трюк при условии, что (lp/ap) действительно.

2

вы, вероятно, имеют больше шансов делать

SELECT *, (lp/ap) as n from myTbl ORDER BY n 
Смежные вопросы