Saltar la navegación

2.4.- Ordenación de registros. Cláusula ORDER BY.

Personas haciendo cola de forma ordenada.
Stockbyte. (Uso educativo nc)


En la consulta del ejemplo anterior hemos obtenido una lista de los nombres y apellidos de las usuarias de nuestro juego. Sería conveniente que aparecieran ordenadas por apellidos, ya que siempre quedará más profesional además de más práctico. De este modo, si necesitáramos localizar un registro concreto la búsqueda sería más rápida. ¿Cómo lo haremos? Para ello usaremos la cláusula ORDER BY.

ORDER BY se utiliza para especificar el criterio de ordenación de la respuesta a nuestra consulta. Tendríamos:

SELECT [ALL | DISTINCT] columna1, columna2, ...
FROM tabla1, tabla2, ...
WHERE condición1, condición2, ...
ORDER BY columna1 [ASC | DESC], columna2 [ASC | DESC], …, columnaN [ASC | DESC]; 

Después de cada columna de ordenación se puede incluir el tipo de ordenación (ascendente o descendente) utilizando las palabras reservadas ASC o DESC. Por defecto, y si no se pone nada, la ordenación es ascendente.

Debes saber que es posible ordenar por más de una columna. Es más, puedes ordenar no solo por columnas sino a través de una expresión creada con columnas, una constante (aunque no tendría mucho sentido) o funciones SQL.

En el siguiente ejemplo, ordenamos por apellidos y, en caso de que sean iguales, por nombre:

SELECT nombre, apellidos
FROM USUARIOS
ORDER BY apellidos, nombre; 

Puedes colocar el número de orden del campo por el que quieres que se ordene en lugar de su nombre, es decir, referenciar a los campos por su posición en la lista de selección. Por ejemplo, si queremos el resultado del ejemplo anterior ordenado por localidad:

SELECT nombre, apellidos, localidad
FROM usuarios
ORDER BY 3; 

Si colocamos un número mayor a la cantidad de campos de la lista de selección, aparece un mensaje de error y la sentencia no se ejecuta.

¿Se puede utilizar cualquier tipo de datos para ordenar? No todos los tipos de campos te servirán para ordenar, únicamente aquellos de tipo carácter, número o fecha.

Autoevaluación

Relaciona cada cláusula de la sentencia SELECT con la información que debe seguirle:

Ejercicio de relacionar
Cláusula Relación Información que le sigue.
WHERE 1. Ordenación.
ORDER BY 2. Columnas.
FROM 3. Tablas.
SELECT 4. Condiciones.

Habilitar JavaScript

Ejercicio resuelto

Utilizando las tablas y datos de la aplicación EMPRESA descargados anteriormente, vamos a realizar una consulta donde obtengamos de la tabla ESTUDIOS, el DNI de los empleados ordenados por Universidad descendente y año de manera ascendente. La columna año la hemos llamado agno para no utilizar el caracter ñ que no es admitido en la mayor parte de los SGBD.