Al terminar, podrás
- Elegir BETWEEN para un intervalo inclusivo.
- Elegir IN para comparar con una lista de valores.
- Traducir ambas formas a comparaciones conocidas para comprobar el filtro.
Recupera lo aprendido: ¿Cuándo deben cumplirse las dos condiciones de un filtro: con AND o con OR?
La idea clave
BETWEEN comprueba si un valor está dentro de un intervalo inclusivo. IN comprueba si coincide con uno de los valores de una lista. Las dos formas hacen que un filtro sea más breve sin cambiar la pregunta que resuelve.
Traducción mental: precio BETWEEN 50 AND 200 equivale a pedir precio >= 50 AND precio <= 200. ciudad IN ('Madrid', 'Bilbao') equivale a unir dos igualdades con OR.
La sintaxis básica
WHERE columna BETWEEN mínimo AND máximo
WHERE columna IN (valor1, valor2, valor3)En BETWEEN, escribe primero el límite inferior y después el superior. En IN, encierra la lista entre paréntesis y utiliza comillas simples para los textos.
Si la columna también contiene horas
Para incluir todo mayo, usa fecha >= '2025-05-01' AND fecha < '2025-06-01'. Un límite superior de '2025-05-31' puede excluir horas de ese último día. En la tabla pedidos del curso las fechas contienen solo año, mes y día.
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 |
Buscamos productos cuyo precio esté entre 50 y 200, incluyendo ambos límites.
SELECT nombre, precio
FROM productos
WHERE precio BETWEEN 50 AND 200;| nombre | precio |
|---|---|
| Monitor 24 | 179,00 |
| Auriculares | 69,90 |
| Disco SSD | 89,00 |
| Altavoz | 54,00 |
Cómo funciona
- El motor compara el precio de cada producto con 50.
- También comprueba que no supere 200.
- Solo conserva las filas que cumplen ambas comparaciones.
- Un valor exactamente igual a 50 o 200 también entraría.
Un error habitual
Olvidar los paréntesis de IN
SELECT nombre
FROM clientes
WHERE ciudad IN 'Madrid', 'Bilbao';La lista debe formar una unidad: IN ('Madrid', 'Bilbao'). En un rango, otro fallo frecuente es invertir los límites; BETWEEN 200 AND 50 no describe el intervalo de 50 a 200.
Practica con datos
Laboratorio SQL
Resuelve la consulta
Escribe una consulta que devuelva nombre y ciudad de los clientes que vivan en Madrid o Bilbao. El orden no importa.
Resultado esperado: 6 filas con nombre, ciudad. El orden de las filas no importa.
Ver tablas y datos
Cargando la estructura del ejercicio…
Usa IN después de ciudad.
Coloca los valores dentro de paréntesis.
Cada texto necesita comillas simples.
Solución
SELECT nombre, ciudad FROM clientes WHERE ciudad IN ('Madrid', 'Bilbao');IN expresa de forma compacta varias igualdades unidas con OR.
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 el carácter inclusivo de BETWEEN y la sintaxis de las comparaciones con listas.
- PostgreSQL: funciones y operadores de comparación
- PostgreSQL: comparaciones con listas y subconsultas
- SQLite: expresiones SQL, BETWEEN e IN
Comprueba si puedes explicarlo
Para un precio de 50, ¿precio BETWEEN 50 AND 200 es verdadero? ¿Y BETWEEN 200 AND 50?
Ver respuesta razonada
El primer filtro lo incluye porque ambos extremos son inclusivos. El segundo no encuentra valores: pide que el precio sea a la vez mayor o igual que 200 y menor o igual que 50.
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
- BETWEEN incluye el límite mínimo y el máximo.
- IN necesita una lista entre paréntesis.
- Los textos de una lista se escriben entre comillas simples.
A continuación: Continúa con Busca patrones de texto con LIKE.