2010-03-03 18 views
7

¿Es posible ordenar un cálculo de 2 filas en mySQL? Por ejemplo, tengo 2 filas, lp y ap que estoy tratando de hacer algo como esto:Clasificación de MySQL en un cálculo

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

Lo que no está lanzando un error, pero su clasificación tampoco por los resultados de ese cálculo. ¿Hay alguna manera de hacerlo, o tengo que almacenar lp/ap en la base de datos?

+0

'lp' y' ap' son filas o columnas? –

Respuesta

17

Sí, es posible, y funciona. Echa un vistazo a la siguiente prueba:

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); volverían los mismos resultados.

+0

Gracias, resulta que el problema no estaba en mi declaración sino en otro lugar completamente diferente, y ahora me siento como un idiota. Es bueno saber que mi conjetura resultó ser correcta, sin embargo. – Stomped

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

Esto debería ser el truco, siempre que el (lp/ap) sea válido.

2

probablemente tendría más posibilidades de hacer

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