2010-06-17 25 views
6

¿Alguna idea sobre cómo ordenar los resultados de una consulta MYSQL por la suma de dos columnas en lugar de por una sola columna?Orden MYSQL por suma de columnas

Select * FROM table ORDER BY (col1+col2) desc 

Sé que no funcionará, pero espero que transmita lo que quiero hacer bastante bien.

Gracias!

Respuesta

21

¿Por qué no intentarlo antes de concluir que no funciona? De hecho, lo hace.

+0

Will almacenar la suma (col1 + col2) en col3 y el índice sobre el mismo, hace que la consulta rápida ?? – user2681045

+1

@ user2681045, dudo que haga que la consulta en la pregunta sea más rápida. Si lo cambia a 'ORDER BY col3' y tiene el índice adecuado, tal vez. Pero eso es a costa de desnormalizar su mesa. –

+1

no sabía lo cerca que estaba de tener éxito antes de darse por vencido y publicar una pregunta. – qualebs

1

La consulta que escribió debe funcionar bien, puede tener cualquier expresión en la cláusula ORDER BY.

+0

No funciona para mí, no creo que pueda tener una expresión en la cláusula ORDER BY –

2

Creo que deberías ser capaz de hacer

SELECT *, col1+col2 as mysum ORDER BY mysum 

que es esencialmente el mismo que ya tiene

3

Suponga que tiene una tabla llamada 'estudiantes'

enter image description here

Ahora quiere saber las calificaciones totales calificadas por cada estudiante. Así, escriba la siguiente consulta

SELECT Name, S1, S2, SUM(S1+S2) AS TOTAL 
FROM Students 
GROUP BY Name, S1, S2 
ORDER BY Total; 

Usted obtendrá el siguiente resultado.

enter image description here