2010-12-11 27 views
8

Tengo una tabla con 2 campos DATE e IMPORTANCE. Ahora quiero ordenar estos dos campos en ORDEN DE DESCENSO de modo que las filas estén ordenadas por IMPORTANCIA para CADA FECHA. Por ejemplo, si se clasifican correcta, las filas deben retornar así:Ordenando múltiples campos en MySQL

Dec 3, 2010 - 10 
Dec 3, 2010 - 10 
Dec 3, 2010 - 8 
Dec 3, 2010 - 7 
Dec 3, 2010 - 3 
Dec 3, 2010 - 1 

Dec 2, 2010 - 10 
Dec 2, 2010 - 9 
Dec 2, 2010 - 3 

Dec 1, 2010 - 8 
Dec 1, 2010 - 5 
Dec 1, 2010 - 5 
Dec 1, 2010 - 4 

¿Hay un eficiente forma de lograr esto con una sola instrucción de consulta?

Respuesta

25
SELECT * FROM yourtable 
ORDER BY `DATE` DESC, `IMPORTANCE` DESC 
+5

@Frank, la fecha es una palabra clave, y en algunos casos, si el nombre de una columna con palabras especiales, las consultas pueden tener errores. '' '' se escapa. –

+3

No, DATE no es una palabra clave y 'no es parte de los estándares ANSI SQL. Use comillas dobles "para escapar de los nombres de los objetos, MySQL también conoce las comillas dobles, se llama ANSI_QUOTES. Consulte http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html y http: // dev. mysql.com/doc/refman/5.5/en/server-sql-mode.html#sqlmode_ansi_quotes –

+1

ANSI_QUOTES no es el comportamiento estándar de Mysql y permite que modifique la sintaxis necesaria para delimitar las cadenas literales, por lo que es muy probable que se rompa gran parte del software. desarrollado para Mysql. – tacone

5

En realidad, simplemente puede agregar tantos campos a PEDIDO POR como desee.

eso sería algo así como:

SELECT * FROM table ORDER BY date DESC, importance DESC 
Cuestiones relacionadas