
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.