2010-03-03 14 views
7

Czy można sortować na podstawie 2 wierszy w mySQL? Na przykład, mam 2 wiersze, lp i ap Próbuję zrobić coś takiego:Sortowanie MySQL na obliczeniach

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

który nie jest rzucanie błąd, ale jego też nie sortując wyników obliczeń. Czy istnieje sposób, aby to zrobić, czy też muszę przechowywać LP/AP w bazie danych?

+0

'lp' i' ap' są wierszami lub kolumnami? –

Odpowiedz

17

Tak, to jest możliwe, i to działa. Sprawdź następujący test:

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); wróci takie same wyniki.

+0

Dzięki, okazuje się, że problem nie był w moim oświadczeniu, ale gdzieś indziej, a teraz czuję się jak idiota. Miło wiedzieć, że moje przypuszczenia okazały się poprawne. – Stomped

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

To powinno wystarczyć, pod warunkiem, że (lp/ap) jest ważne.

2

będzie prawdopodobnie masz większe szanse robi

SELECT *, (lp/ap) as n from myTbl ORDER BY n 
Powiązane problemy