# SQL ORDER BY : aprende a ordenar los resultados de tu búsqueda

Con SQL `ORDER BY` puedes organizar los resultados de búsqueda para consultas de datos **en orden ascendente o descendente**. Al ordenar los datos de tu tabla de destino en filas y columnas, te será mucho más fácil encontrar los datos que buscas, lo que acelera los análisis de datos y las consultas de conjuntos complejos.

## ¿Qué es el comando SQL `ORDER BY`?

El comando `ORDER BY` en SQL se emplea para ordenar datos y resultados de conjuntos de datos simples o complejos en la tabla de destino. Con él se puede especificar que los datos de destino se ordenen **en sentido ascendente o descendente**, por lo que quedarán organizados y serán fáciles de consultar. Por defecto, el comando ordena los datos de la consulta en orden ascendente, es decir, de la A a la Z o del valor menor al mayor. Si se prefiere un orden diferente, debe introducirse la palabra clave `ASC` para *ascendente* o `DESC` para *descendente*.

Puedes elegir una o varias columnas para ordenar los resultados de tu consulta. La función `ORDER BY` es crucial, ya que presenta los datos de una manera ordenada y permite así **consultar datos de manera rápida y eficaz**. `ORDER BY` se utiliza a menudo junto con [SQL SELECT](https://www.ionos.es/digitalguide/servidores/configuracion/sql-select/), [SQL WHERE](https://www.ionos.es/digitalguide/servidores/configuracion/sql-where/) y, dependiendo del caso, con otros [operadores SQL](https://www.ionos.es/digitalguide/servidores/configuracion/sql-operators/) o funciones como [SQL GROUP BY](https://www.ionos.es/digitalguide/servidores/configuracion/sql-group-by/)

Consejo ¿Te gustaría trabajar con [SQL](https://www.ionos.es/digitalguide/servidores/know-how/que-es-sql/), pero te faltan los conocimientos para ello? En nuestra [introducción a SQL con ejemplos](https://www.ionos.es/digitalguide/servidores/configuracion/sql-introduccion-con-ejemplos/) puedes aprender lo básico para comenzar a utilizar este lenguaje de programación.

## La sintaxis de SQL `ORDER BY`

La sintaxis de `ORDER BY` es la siguiente:

```sql
SELECT  columnaA, columnaB, …  o *
FROM  tabla
ORDER BY  columnaA, columnaB, …  (opcional: ASC o DESC)
```

Nota Si especificas solo una columna después de `ORDER BY`, obtendrás **una columna con los resultados ordenados**. Si especificas varias columnas, la cláusula ordena primero todos los resultados según la columna A. Si hay entradas idénticas en distintas filas, la cláusula ordena las entradas de acuerdo con la columna B.

Puedes ampliar la sintaxis del SQL `ORDER BY` con los operadores o parámetros que quieras. Mediante la cláusula `WHERE` defines, por ejemplo, condiciones adicionales para limitar los resultados de la consulta. Para combinar con esta cláusula, debes escribir lo siguiente:

```sql
SELECT  columnaA, columnaB, …  o *
FROM  tabla
WHERE  columnaA  =  'condición'
ORDER BY  columnaA, columnaB, …  (opcional: ASC o DESC)
```

Se pueden utilizar estos parámetros:

- `SELECT`: mediante SQL SELECT puedes establecer qué datos quieres analizar. Con el asterisco `*` especificas si la consulta es para todo el conjunto de datos o puedes indicar nombres de columnas para examinar columnas específicas.
- `FROM`: establece de qué tabla se consultan los datos.
- `WHERE`: la cláusula opcional [SQL WHERE](https://www.ionos.es/digitalguide/servidores/configuracion/sql-where/) permite definir una condición específica según la cual deben ordenarse los resultados. En este caso, puedes utilizar operadores de comparación adicionales como `=` u operadores como [SQL LIKE](https://www.ionos.es/digitalguide/servidores/configuracion/sql-like/) o [SQL NOT](https://www.ionos.es/digitalguide/servidores/configuracion/sql-not/).
- `ORDER BY`: establece según qué valor deben ordenarse los resultados. Si no añades ni `ASC` ni `DESC`, el orden será alfabético o numérico descendente automáticamente.

Nota La cláusula `ORDER BY` ordena los valores NULL en función de la base de datos utilizada y la secuencia de orden elegida. En SQLite, MySQL y SQL Server, el comando trata los valores NULL como los valores más bajos, por lo que cuando se ordenan en sentido ascendente se sitúan al principio. En Oracle y PostgreSQL, los valores NULL se consideran los valores más altos, por lo que al ordenarse en sentido ascendente se sitúan al final.

## Los usos de `ORDER BY`

Estos son algunas de las posibles aplicaciones de SQL ORDER BY:

- clasificar información de productos por nombre, categoría o precio;
- clasificar transacciones por cantidad, fecha o nombre;
- ordenar pedidos por cantidad o valoraciones;
- ordenar empleados por salario, encargos, rendimiento o departamento;
- realizar listas de inventario por cantidad o nombre;
- ordenar entregas por código postal o número de seguimiento;
- ordenar listas de clientes por región o edad.

## Ejemplos de SQL `ORDER BY`

A continuación, te explicamos cómo funciona `ORDER BY` mediante tres ejemplos.

### Ordenar productos por precio

Imagina que en la tabla “Productos” necesitas ordenar los productos de la categoría Belleza por precio en sentido ascendente. Para ello, debes utilizar FROM para establecer la categoría que quieres ordenar. Después, escribe `ORDER BY` y `ASC` para ordenar por precio en sentido ascendente de la siguiente manera:

```sql
SELECT  *
FROM  Productos
WHERE  categoría  = 'Belleza'
ORDER BY  precio  ASC;
```

### Filtrar grupos de clientes

Imagina que en la tabla “Clientes” quieres ordenar alfabéticamente los nombres de los clientes procedentes de Alemania. Para ello, debes utilizar la condición “país” y, para ordenar de la A a la Z, debes añadir `ASC`. Si quisieras ordenar de la Z a la A, deberías introducir `DESC` después del comando `ORDER BY` de SQL. Se escribiría así:

```sql
SELECT  *
FROM  Clientes
WHERE  país = 'Alemania'
ORDER BY  nombre  DESC;
```

### Ordenar con varias condiciones

Imagina que en la tabla “Productos” necesitas obtener las entradas de la categoría “Electrónica” por cantidad en orden alfabético ascendente. Y, si la cantidad del pedido es idéntica, quieres ordenar los pedidos por región. La sintaxis sería la siguiente:

```sql
SELECT  *
FROM  Productos
WHERE  categoría  =  'Electrónica'
ORDER BY  cantidad ASC,  región  DESC;
```

## Alternativas a SQL `ORDER BY`

Básicamente, no existe una alternativa que tenga la misma función que `ORDER BY`, pero entre los [comandos SQL](https://www.ionos.es/digitalguide/servidores/configuracion/comandos-sql/) que suelen emplearse en combinación con SQL `ORDER BY` se encuentra SQL GROUP BY. Mientras que con `GROUP BY` puedes agrupar conjuntos de datos de columnas, por ejemplo, **por categoría**, con `ORDER BY` también puedes ordenarlos.

**Por ejemplo**, imagina que quieres agrupar la cantidad de pedidos de clientes por país y, después, ordenar por cantidad media de pedidos de manera ascendente mediante la función agregada [SQL AVG](https://www.ionos.es/digitalguide/servidores/configuracion/sql-avg/). Esta es la sintaxis que deberías usar:

```sql
SELECT  país, AVG(cantidad)
FROM  Clientes
WHERE  categoría = 'Electrónica'
GROUP BY  país
ORDER BY  AVG(cantidad) ASC;
```

La cláusula [SQL HAVING](https://www.ionos.es/digitalguide/servidores/configuracion/sql-having/) también permite ordenar conjuntos de datos según criterios y condiciones definidos. Al utilizar `LIMIT`, se puede limitar el número de resultados.


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/configuracion/sql-order-by/](https://www.ionos.es/digitalguide/servidores/configuracion/sql-order-by/) for AI/LLM consumption.