Al terminar, podrás
- Ordenar por una o varias expresiones.
- Limitar un resultado después de establecer un orden estable.
- Usar OFFSET y reconocer que la sintaxis para limitar cambia entre motores.
Recupera lo aprendido: ¿WHERE define qué filas aparecen o en qué orden se muestran?
La idea clave
ORDER BY es la cláusula que hace explícito el orden del resultado. LIMIT conserva una cantidad máxima de filas y OFFSET omite un bloque inicial. Para pedir «los primeros» o «los más altos», primero debes definir qué significa estar primero.
Regla de estabilidad: si la primera columna de orden puede empatar, añade una segunda. Así la consulta decide también cómo ordenar las filas empatadas.
La sintaxis del laboratorio
ORDER BY columna1 ASC|DESC, columna2 ASC|DESC
LIMIT cantidad
OFFSET filas_omitidasASC ordena de menor a mayor y es el valor predeterminado. DESC invierte el sentido. En el curso usamos LIMIT, disponible en SQLite, PostgreSQL y MySQL; SQL Server utiliza TOP o OFFSET ... FETCH.
Ejemplo paso a paso
| nombre | precio |
|---|---|
| Ratón | 24,90 |
| Teclado | 49,50 |
| Monitor 24 | 179,00 |
| Portátil Pro | 999,00 |
| Auriculares | 69,90 |
| Monitor 27 | 249,00 |
| Disco SSD | 89,00 |
| Cable USB-C | 12,00 |
| Altavoz | 54,00 |
Queremos los tres productos más caros. Si dos precios fueran iguales, ordenaríamos sus nombres alfabéticamente.
SELECT nombre, precio
FROM productos
ORDER BY precio DESC, nombre ASC
LIMIT 3;| nombre | precio |
|---|---|
| Portátil Pro | 999,00 |
| Monitor 27 | 249,00 |
| Monitor 24 | 179,00 |
Cómo funciona
ORDER BY precio DESCcoloca los precios mayores al principio.nombre ASCresuelve un posible empate de precio.LIMIT 3conserva las tres primeras filas del orden ya establecido.
Un error habitual
Limitar antes de escribir el orden
SELECT nombre
FROM productos
LIMIT 3
ORDER BY precio DESC;En esta sintaxis, ORDER BY se escribe antes de LIMIT. Además, limitar sin un orden estable no garantiza qué filas formarán el bloque.
Practica con datos
Laboratorio SQL
Resuelve la consulta
Escribe una consulta que devuelva los dos productos con menos stock, mostrando nombre y stock. Si empatan, ordena el nombre alfabéticamente.
Resultado esperado: 2 filas con nombre, stock. El orden importa y los empates se resuelven por nombre.
Ver tablas y datos
Cargando la estructura del ejercicio…
Ordena primero por stock de menor a mayor.
Añade nombre ASC como segunda clave para resolver empates.
Limita el resultado a dos filas.
Solución
SELECT nombre, stock FROM productos ORDER BY stock ASC, nombre ASC LIMIT 2;El stock decide la prioridad y el nombre hace determinista el orden cuando dos productos tienen el mismo stock.
Puedes consultar la solución y volver a intentarlo. La práctica se completa cuando tu consulta funciona.
La consulta usa datos ficticios y se ejecuta solo en este navegador.
Fuentes técnicas consultadas
Las fuentes confirman que el orden no está garantizado sin ORDER BY y documentan las diferencias de sintaxis para limitar filas.
- PostgreSQL: ordenar filas con ORDER BY
- PostgreSQL: LIMIT y OFFSET
- SQLite: ORDER BY, LIMIT y OFFSET
- MySQL 8.4: sintaxis de SELECT y LIMIT
- SQL Server: TOP y alternativas para limitar filas
Comprueba si puedes explicarlo
Dos productos tienen el mismo stock y el mismo nombre. ¿Basta ORDER BY stock, nombre para elegir siempre el mismo primero?
Ver respuesta razonada
No. Ambos criterios siguen empatados. Añade una clave única, por ejemplo id, como último desempate. LIMIT toma filas del orden que hayas definido.
Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.
Qué debes recordar
- Solo ORDER BY garantiza el orden solicitado.
- Añade una segunda clave cuando pueda haber empates.
- LIMIT y OFFSET se aplican al resultado ya ordenado; su sintaxis no es universal.
A continuación: Continúa con Evita duplicados con DISTINCT.
Cuando el orden dependa de una regla especial, continúa con NULLS FIRST/LAST y ORDER BY CASE.