Cuando haces una consulta en SQL, puede que los resultados no aparezcan en ningún orden lógico. Hoy puede parecer que todo está ordenado por nombre... pero mañana, después de agregar nuevos datos o actualizar el servidor, el orden puede cambiar completamente.
💡 Por eso, nunca confíes en el orden “por defecto”. Si quieres controlar el orden de los resultados, usa el operador ORDER BY.
Cómo ordenar los resultados
Imagina que tenemos una tabla de usuarios y queremos mostrarlos de la A a la Z según su nombre de usuario:
SELECT
id,
username,
created_at
FROM users ORDER BY username;
| id | username |
|---|---|
| 12 | Abelardo58 |
| 33 | Alanna99 |
ORDER BY ordena los datos por el campo que indiques. Si no aclaras nada más, el orden será ascendente (ASC): de menor a mayor, de la A a la Z o del más antiguo al más nuevo.
🔵 Abrir en DB Fiddle
También puedes ordenar por fechas o por números, no solo por texto:
SELECT
id,
username,
created_at
FROM users ORDER BY created_at;
🔵 Abriren DB Fiddle
Controlar el orden
A veces necesitas cambiar la dirección del orden o usar más de un criterio. Veamos cómo hacerlo 👇
🔼 Ascendente (de menor a mayor)
ORDER BY created_at ASC;
Es la opción predeterminada, pero puedes escribir ASC si quieres dejarlo claro.
🔵 Abrir en DB Fiddle
🔽 Descendente (de mayor a menor)
ORDER BY created_at DESC;
Útil, por ejemplo, cuando quieres ver los registros más recientes primero.
🔵 Abrir en DB Fiddle
Ordenar por varios campos
A veces una sola columna no basta. Por ejemplo, queremos ordenar por nombre, y si hay varios con el mismo nombre, por fecha de creación (del más nuevo al más viejo):
SELECT first_name, created_at
FROM users
ORDER BY first_name ASC, created_at DESC;
| id | username | created_at |
|---|---|---|
| 12 | Abelardo58 | 2022-06-14T13:10:36.133Z |
| 33 | Alanna99 | 2022-06-14T19:30:46.438Z |
| 58 | Alena17 | 2022-06-14T13:10:08.010Z |
| ... |
💬 SQL leerá la consulta así: “Primero ordena por first_name (A–Z), y dentro de cada grupo, ordena por created_at (nuevo → viejo).”
🔵 Abrir en DB Fiddle
Qué pasa con los valores NULL
Los valores vacíos (NULL) pueden alterar el orden, porque cada sistema los trata distinto:
- En PostgreSQL, los
NULLsuelen ir al final. - En MySQL, al principio.
Para evitar sorpresas, puedes decidir tú dónde deben ir:
NULLS FIRSTNULLS LAST
Ejemplo usando NULLS FIRST:
-- NULL al inicio
ORDER BY created_at ASC NULLS FIRST;
🔵 Abrir en DB Fiddle
-- NULL al final
ORDER BY created_at DESC NULLS LAST;
🔵 Abrir en DB Fiddle
Resumen
- El orden por defecto no está garantizado y puede cambiar.
- Usa
ORDER BYpara definir el orden tú mismo. ASC= ascendente (de menor a mayor),DESC= descendente.- Puedes ordenar por varios campos y decidir la posición de los
NULL.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.