El problema real: la base te devuelve filas en un orden cualquiera

SQL no está pensado para "adivinar" el orden que tú quieres. Si haces un SELECT sin ordenar, la base puede devolverte las filas como le dé la gana, según el motor, el plan de ejecución o hasta cambios internos de la tabla. Y claro, para una revisión rápida eso es un caos.

Aquí es donde entra ORDER BY. Sirve para decirle al motor: "mira, enséñame esto ordenado por esta columna y, si hace falta, por otra más". En una oficina real esto se usa todo el rato: ventas por importe, incidencias por fecha, pedidos por prioridad, empleados por departamento.

La sintaxis base, sin rodeos

SELECT cliente, importe, fecha
FROM ventas
ORDER BY importe ASC;

ASC significa ascendente. Lo normal es que te muestre de menor a mayor, así que si quieres ordenar números pequeños primero, esto te vale. En muchos motores, ASC incluso es opcional porque es el comportamiento por defecto.

Cuando quieres lo contrario: mayor a menor

SELECT cliente, importe, fecha
FROM ventas
ORDER BY importe DESC;

DESC ordena al revés. Esto es lo típico cuando quieres ver primero los pedidos más caros, las facturas más grandes o los clientes con más gasto. Si estás revisando resultados para dirección, normalmente esta es la versión que más se usa.

Ordenar por más de una columna

Aquí empieza lo bueno. Muchas veces ordenar por una sola columna no basta. Imagina que quieres ver primero los departamentos, y dentro de cada departamento, las ventas más altas. Pues se hace así:

SELECT departamento, vendedor, importe
FROM ventas
ORDER BY departamento ASC, importe DESC;

Fíjate en el detalle: la primera columna manda el grupo, y la segunda resuelve el orden dentro de ese grupo. Esto ahorra un montón de trabajo cuando estás preparando informes internos o comprobando datos antes de pasarlos a Excel, Power BI o al cliente.

Ejemplo real de oficina

Vamos a poner un caso más cercano. Tienes una tabla de facturas y quieres sacar primero las más recientes, pero si coinciden en fecha, quieres que aparezcan antes las de mayor importe. Eso queda así:

SELECT id_factura, cliente, fecha_factura, importe_total
FROM facturas
ORDER BY fecha_factura DESC, importe_total DESC;

Errores comunes que te pueden fastidiar el resultado

Hay cuatro fallos que se repiten muchísimo cuando alguien empieza con ORDER BY:

  • Pensar que el orden "natural" de la tabla sirve. No sirve. Si no ordenas, no mandas.
  • Escribir ORDER BY antes de WHERE. El orden correcto es primero filtrar y luego ordenar.
  • Olvidar que los textos y los números no se comportan igual. Ordenar "10" y "2" como texto no da el mismo resultado que hacerlo como número.
  • No revisar cómo trata tu base los valores nulos. En algunos motores pueden salir arriba, en otros abajo, y si necesitas control total, toca ajustarlo.

También hay un clásico: ordenar por una columna que no estás mostrando. En SQL se puede hacer en muchos casos, pero si vas justo de claridad, mejor enseña la columna o usa un alias que se entienda. Menos magia, menos sustos.

Cuándo merece la pena usar ORDER BY con cabeza

Si vas a exportar resultados para revisar una incidencia, preparar un informe rápido o hacer un cruce con otro equipo, ordenar bien desde la consulta te ahorra clics después. Y lo mejor es que no dependes de lo que haga luego Excel, Power BI o la herramienta que uses para visualizar.

En informes de dirección suele funcionar muy bien esta lógica: primero filtra lo que importa, luego ordena por la métrica principal, y al final deja una segunda columna de desempate. Así el resultado queda limpio y consistente cada vez que lo ejecutas.

Pro Tip

Cuando estés probando consultas, ordena primero por una sola columna y añade después la segunda. Te será mucho más fácil detectar si el resultado raro viene del filtro o del orden. Y en muchos editores SQL, Ctrl + / te comenta o descomenta líneas al vuelo, así que puedes dejar versiones de prueba sin borrar nada.