⏳ ¡Últimos días de octubre! SQLtest.online es gratuito gracias a las donaciones, y aún necesitamos alcanzar la meta de este mes para que el sitio siga funcionando en noviembre. Cada donación cuenta. Apoyar ahora →
Código SQL copiado al portapapeles

Combinar WHERE, ORDER BY y LIMIT en SQL

Lección 2.8 · Tiempo de lectura: ~6 min · Tareas de práctica ↓

La mayoría de las consultas SQL reales combinan WHERE, ORDER BY y LIMIT: filtran filas, las ordenan y devuelven solo la parte necesaria. En esta lección aprenderás el orden obligatorio de estas cláusulas, el orden en que la base de datos realmente las procesa, y cómo escribir consultas top-N filtradas y con paginación.

En este módulo aprendiste a filtrar filas con WHERE, ordenarlas con ORDER BY y limitar el resultado con LIMIT. Por separado, cada cláusula resuelve una tarea pequeña. Juntas responden preguntas de negocio típicas: "las 5 películas más baratas de reponer", "los últimos pagos de más de $10", "la página 2 de los resultados de búsqueda".

Orden de las cláusulas SQL: el orden de escritura SELECT, FROM, WHERE, ORDER BY, LIMIT comparado con el orden lógico de procesamiento FROM, WHERE, SELECT, ORDER BY, LIMIT

El orden de escritura de las cláusulas

Las cláusulas de una consulta SELECT deben escribirse en un orden fijo. En cualquier otro orden, la base de datos devuelve un error de sintaxis.

SELECT columns
FROM table_name
WHERE condition
ORDER BY sort_columns
LIMIT row_count OFFSET skip_count;
  1. SELECT: qué columnas devolver.
  2. FROM: qué tabla leer.
  3. WHERE: qué filas conservar.
  4. ORDER BY: cómo ordenarlas.
  5. LIMIT / OFFSET: qué parte del resultado ordenado devolver.

Este es el orden de las cláusulas que ya conoces; GROUP BY y HAVING ocuparán su lugar entre WHERE y ORDER BY en el módulo 4.


El orden lógico de procesamiento

La base de datos no procesa una consulta en el orden en que está escrita. Lógicamente, los pasos son:

PasoCláusulaQué ocurre
1FROMSe elige la tabla de origen
2WHERESe eliminan las filas que no cumplen la condición
3SELECTSe calculan las columnas y expresiones del resultado
4ORDER BYSe ordenan las filas
5LIMIT / OFFSETSe devuelve la parte pedida de las filas ordenadas

Este orden explica dos reglas importantes:

  • WHERE no puede usar alias de columnas del SELECT: en el paso 2 todavía no existen.
  • LIMIT se aplica después del filtrado y el ordenamiento, así que "top 5" significa las 5 primeras filas filtradas, no 5 filas al azar que después se filtran.

El optimizador puede ejecutar la consulta de otra forma internamente, pero el resultado siempre es el mismo que si los pasos se hicieran en este orden.


Consultas top-N con filtro

Las cinco películas económicas más cortas

SELECT title, length, replacement_cost
FROM film
WHERE replacement_cost < 15.00
ORDER BY length, title
LIMIT 5;

Resultado: las 5 películas más cortas cuya reposición cuesta menos de $15.

Los últimos pagos grandes

SELECT payment_id, customer_id, amount, payment_date
FROM payment
WHERE amount >= 10.00
ORDER BY payment_date DESC
LIMIT 10;

Resultado: los 10 pagos más recientes de $10 o más.

Actores por letra

SELECT first_name, last_name
FROM actor
WHERE last_name LIKE 'B%'
ORDER BY first_name, last_name
LIMIT 3;

Resultado: los 3 primeros actores, por orden de nombre, cuyo apellido empieza con "B".


Paginar una lista filtrada

Las aplicaciones suelen paginar una lista filtrada y ordenada, como los resultados de una búsqueda. Hacen falta las tres cláusulas:

  1. WHERE selecciona las filas que busca el usuario.
  2. ORDER BY fija el orden, para que las filas no se repitan ni desaparezcan entre páginas.
  3. LIMIT y OFFSET eligen la página: LIMIT S OFFSET (N - 1) * S.
SELECT first_name, last_name
FROM actor
WHERE first_name LIKE 'A%'
ORDER BY last_name, first_name
LIMIT 5 OFFSET 5;

Resultado: la página 2 (filas 6 a 10) de los actores cuyo nombre empieza con "A", ordenados por apellido.


Conclusiones clave:

  • El orden de escritura es SELECT → FROM → WHERE → ORDER BY → LIMIT.
  • El orden lógico es FROM → WHERE → SELECT → ORDER BY → LIMIT.
  • WHERE se aplica antes que SELECT, por eso no puede usar alias de columnas; ORDER BY sí puede.
  • LIMIT toma filas de un resultado ya filtrado y ordenado.
  • Para listas top-N y paginación estables, haz que el orden sea único.

Preguntas frecuentes

¿Cuál es el orden correcto de WHERE, ORDER BY y LIMIT en SQL?

Primero WHERE, luego ORDER BY y luego LIMIT: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT .... Cualquier otro orden provoca un error de sintaxis.

¿En qué orden ejecuta SQL una consulta?

Lógicamente: FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY, LIMIT. Por eso WHERE no puede usar alias del SELECT, mientras que ORDER BY sí.

¿LIMIT se aplica antes o después de WHERE?

Después. La base de datos primero filtra las filas con WHERE, las ordena con ORDER BY y solo entonces devuelve la cantidad de filas definida por LIMIT.

Intenta resolver las siguientes tareas para reforzar lo que aprendiste en esta lección.

  1. Recuperar Películas de Más de 3 Horas
  2. Aeronaves de Largo Alcance