Guía rápida de sql ORDER BY

ORDER BY es una clausula que se utiliza para ordenar el resultado según una o más columnas.

Hasta ahora nuestros resultados no han estado ordenados y aparecían sin orden alguno, pero con ORDER BY podemos controlar el orden en el que aparezcan nuestros resultados. Por defecto la clausula tiene orden ascendente (ASC) pero se puede poner en orden descendente tan solo añadiendo DESC.

Su sintaxis básica es muy sencilla:

SELECT * FROM tabla ORDER BY columna ASC|DESC, columna ASC|DESC

De este modo podemos hacer diferentes consultas para ilustrar como funciona la clausula:

Ordenando por una única columna de forma ascendente

Si por ejemplo queremos ordenar nuestros proveedores por el nombre del país tan solo tenemos que hacer la siguiente consulta:

SELECT pais, ciudad, NombreContacto FROM proveedor ORDER BY pais

Donde aparecerán los resultados ordenados por el nombre del país:

País Ciudad nombre contacto
Alemania Frankfurt Martin Bein
Alemania Cuxhaven Sven Petersen
Alemania Berlín Petra Winkler
Australia Sydney Wendy Mackenzie
Australia Melbourne Ian Devling
Brasil São Paulo Carlos Diaz
Canadá Montréal Jean-Guy Lauzon
Canadá Ste-Hyacinthe Chantal Goulet
Dinamarca Lyngby Niels Petersen
España Oviedo Antonio del Valle Saavedra
Estados Unidos Bend Cheryl Saylor
Estados Unidos New Orleans Shelley Burke
Estados Unidos Boston Robb Merchant
Estados Unidos Ann Arbor Regina Murphy
Finlandia Lappeenranta Anne Heikkonen
Francia París Guylène Nodier
Francia Annecy Eliane Noz
Francia Montceau Marie Delamare
Holanda Zaandam Dirk Luchte
Italia Salerno Giovanni Giudici
Italia Ravenna Elio Rossi
Japón Tokyo Yoshi Nagase
Japón Osaka Mayumi Ohno
Noruega Sandvika Beate Vileid
Reino Unido Manchester Peter Wilson
Reino Unido Londres Charlotte Cooper
Singapur Singapore Chandra Leka
Suecia Stockholm Michael Björn
Suecia Göteborg Lars Peterson

Si quisiéramos ponerlos en orden inverso tan solo habría que introducir DESC

Ordenando por varias columnas

Cunado queremos ordenar por varias columnas lo que hacemos es coger todos los registros ordenados y dentro del primer orden colocar el segundo.

En el siguiente ejemplo se ve muy claro como funciona, colocando los países en orden alfabético y las ciudades en orden inverso.

SELECT pais, ciudad, NombreContacto FROM proveedor ORDER BY pais ASC, Ciudad DESC

Y el resultado obtenido es:

País Ciudad nombre contacto
Alemania Frankfurt Martin Bein
Alemania Cuxhaven Sven Petersen
Alemania Berlín Petra Winkler
Australia Sydney Wendy Mackenzie
Australia Melbourne Ian Devling
Brasil São Paulo Carlos Diaz
Canadá Ste-Hyacinthe Chantal Goulet
Canadá Montréal Jean-Guy Lauzon
Dinamarca Lyngby Niels Petersen
España Oviedo Antonio del Valle Saavedra
Estados Unidos New Orleans Shelley Burke
Estados Unidos Boston Robb Merchant
Estados Unidos Bend Cheryl Saylor
Estados Unidos Ann Arbor Regina Murphy
Finlandia Lappeenranta Anne Heikkonen
Francia París Guylène Nodier
Francia Montceau Marie Delamare
Francia Annecy Eliane Noz
Holanda Zaandam Dirk Luchte
Italia Salerno Giovanni Giudici
Italia Ravenna Elio Rossi
Japón Tokyo Yoshi Nagase
Japón Osaka Mayumi Ohno
Noruega Sandvika Beate Vileid
Reino Unido Manchester Peter Wilson
Reino Unido Londres Charlotte Cooper
Singapur Singapore Chandra Leka
Suecia Stockholm Michael Björn
Suecia Göteborg Lars Peterson