Ordenación: la cláusula ORDER BY
Al ejecutar una consulta SELECT, las filas se devuelven por defecto en un orden indeterminado. El orden real depende de cómo el SGBD combine y recorra las tablas y de cómo estén dispuestos los datos en el disco, así que no puedes fiarte de él. Para ordenar los registros se usa la cláusula ORDER BY.
Estructura general de una consulta con ORDER BY
SELECT campos_tabla FROM nombre_tabla
[WHERE condicion]
ORDER BY columna [ASC | DESC] [, ...];- [ ]parte opcional
- a | buna de las opciones
- ...se puede repetir
- campos_tabla
- Las columnas que aparecerán en el resultado.
- nombre_tabla
- La tabla de la que se seleccionan los datos.
- condicion
Qué filas se seleccionan antes de ordenar.
Opcional- columna
La columna por cuyos valores se ordenan las filas. Puedes indicar varias columnas separadas por comas.
- ASC | DESC
El sentido de la ordenación: ASC, ascendente (por defecto); DESC, descendente.
Palabra claveOpcionalASCDESC
Por ejemplo, vamos a mostrar los nombres de las aerolíneas de la tabla Company en orden alfabético:
MySQL 8.4SELECT name FROM Company ORDER BY name;
Orden ascendente y descendente para los tipos principales
Ordenación por varias columnas
Para ordenar los resultados por dos o más columnas, hay que indicarlas separadas por comas.
ORDER BY columna_1 [ASC | DESC], columna_2 [ASC | DESC];- [ ]parte opcional
- a | buna de las opciones
- columna_1
La columna por la que se ordenan las filas en primer lugar.
- columna_2
La columna por la que se ordenan las filas que tienen el mismo valor en columna_1.
- ASC | DESC
El sentido de la ordenación para la columna detrás de la que aparece. Por defecto, ASC.
Palabra claveOpcionalASCDESC
Los datos se ordenan por la primera columna, pero si hay varios registros con el mismo valor en la primera columna, estos se ordenan por la segunda. No hay límite en el número de columnas por las que se puede ordenar.
Vamos a mostrar la información de los vuelos de la tabla Trip, ordenada por ciudad de salida en orden ascendente y por ciudad de llegada en orden descendente:
MySQL 8.4SELECT DISTINCT town_from, town_to FROM Trip ORDER BY town_from, town_to DESC;
En este ejemplo, primero los registros se ordenan por la columna town_from. Después se aplica la ordenación descendente por la columna town_to dentro de los grupos de filas que tienen el mismo valor en la columna town_from.