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.
- 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 |
- 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.