Ordenar resultados con ORDER BY
Objetivos
Al terminar podrás controlar el orden de salida y pedir una página pequeña de resultados sin confundir el orden de almacenamiento con el orden de consulta.
Concepto
Una tabla no promete devolver sus filas en un orden particular. ORDER BY ordena el resultado: ASC va de menor a mayor o de A a Z; DESC invierte ese criterio. Puedes ordenar por varias columnas. MySQL usa la siguiente solo cuando hay empate en la anterior.
LIMIT restringe la cantidad de filas y OFFSET indica cuántas filas saltar. Un desempate como customer_id evita que nombres iguales cambien de posición entre páginas.
Ejemplo
Muestra la segunda página de clientes activos cuya tienda principal asignada es la 1:
SELECT customer_id, first_name, last_name, active
FROM customer
WHERE active = 1
AND store_id = 1
ORDER BY last_name ASC, first_name ASC, customer_id ASC
LIMIT 5 OFFSET 5;El orden se aplica antes de limitar el resultado. Esta consulta devuelve hasta cinco filas después de saltar las primeras cinco.
Nota
Importante: LIMIT sin ORDER BY puede mostrar una muestra distinta. Para recorrer resultados por páginas, usa siempre un orden que termine en una clave única.
Práctica guiada
- Cambia
ASCporDESCparalast_namey predice qué cambia. - Quita el filtro
store_idy deja el orden por apellido, nombre e identificador. - Cambia
LIMIT 5 OFFSET 5porLIMIT 10y explica por qué ahora es la primera página.
Reto
Muestra hasta ocho clientes inactivos. Ordénalos por apellido de Z a A, luego por nombre de A a Z y finalmente por customer_id. Devuelve customer_id, first_name, last_name y active.
Quiz
¿Para qué sirve el último criterio customer_id en el ejemplo?
- A. Para crear una nueva columna.
- B. Para desempatar nombres repetidos y hacer estable la paginación.
- C. Para filtrar la tienda.
Respuesta: B. La clave única fija el orden cuando los nombres coinciden.
Comprobación
Ya puedes filtrar y presentar una muestra reproducible. Ahora usarás esas consultas para conectar tablas relacionadas.