Cláusula ORDER BY en SQL

La cláusula ORDER BY nos permite ordenar un conjunto de resultados devueltos por una SELECT a través de un campo de manera ascendente o descendente. La cláusula ORDER BY siempre se escribirá al final de la sentencia.

  1. Ordenación descendente: Los registros se ordenarán de valor más alto a valor más bajo, siendo los más altos los primeros registros del conjunto de resultados:
SELECT *
FROM Clientes
ORDER BY idClientes DESC;
idClientes nombre apellidos direccion cuenta
5 Alejandro Valero Martinez C/ Serrano 67 778345112
4 Luis Sanchez García C/ de la luz 21 447824556
3 Ana Fernandez Montero Av. de Santiago 11 998344567
2 María Lopez ruiz C/ Alcalá 138 123456789
1 Fernando García Rodriguez C/ Virgen del rosal 28 111222333
  1. Ordenación ascendente: Los registros se ordenarán de valor más bajo a valor más alto, siendo los más bajos los primeros registros del conjunto de resultados:
SELECT *
FROM Pedidos
WHERE fechaPedido > '01-02-2022'
ORDER BY totalPrecio ASC;
idPedidos producto descripcionProducto precio fechaPedido numeroProductos totalPrecio idClientes
7 Nintendo Switch Consola Nintendo 299,99 2022-09-05 3 899,97 5
5 Echo DOT 3 Altavoz Alexa 39,99 2022-09-01 50 1999,5 4
2 Play Station 5 Consola Sony 549,95 2022-07-18 4 2199,8 2
4 MacBook Pro M1 Portátil Apple 2449,5 2022-06-20 1 2449,5 1
6 Echo DOT 4 Altavoz Alexa 59,99 2022-09-01 50 2999,5 4
1 Xiami Mi 11 Smartphone 286,95 2022-07-09 15 4304,25 3

En este ejemplo, aunque a priori pueda parecer que estemos ordenando de manera descendente si nos fijamos en el idPedidos, hay que recordar que estamos ordenando por el totalPrecio, donde podemos comprobar que los valores se han ordenado de manera ascendente, del más bajo al más alto.

Es posible también ordenar por el número de posición de columna, aunque en ocasiones puede consistir una mala práctica de programación:

SELECT *
FROM Clientes
ORDER BY 2 DESC;

Esta ejecución devolverá los registros ordenados por nombre de manera descendente:

idClientes nombre apellidos direccion cuenta
2 María Lopez ruiz C/ Alcalá 138 123456789
4 Luis Sanchez García C/ de la luz 21 447824556
1 Fernando García Rodriguez C/ Virgen del rosal 28 111222333
3 Ana Fernandez Montero Av. de Santiago 11 998344567
5 Alejandro Valero Martinez C/ Serrano 67 778345112

En el caso de utilizar ORDER BY sin especificar el tipo de ordenación, el sistema realizará una ordenación ASC (ascendente) por defecto.