El operador IN en SQL
El operador
IN
en SQL comprueba si un valor está dentro de una lista de opciones en la cláusula
WHERE
. Es una forma clara de decir «si el valor es cualquiera de estos…».
El operador IN en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.
Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.
En lugar de encadenar muchas condiciones con
OR
, escribes los valores entre paréntesis. Por ejemplo,
Pais IN ('España', 'Francia', 'Italia')
equivale a comprobar país España, país Francia o país Italia, pero resulta más legible cuando la lista crece.
También existe
NOT IN
para excluir una lista de valores. Más adelante verás que la lista puede generarse con otra consulta
SELECT
(subconsulta).
Sintaxis IN
La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.
Plantilla IN
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna IN (valor1, valor2, ...);
IN con lista de valores en SQL
En lugar de encadenar varios
OR
, escribe todos los valores entre paréntesis:
España, Francia o Italia
SELECT *
FROM Clientes
WHERE Pais IN ('España', 'Francia', 'Italia');
Resultado: solo clientes de España, Francia e Italia.
| Nombre_Cliente | Pais |
|---|---|
| Ana García | España |
| Luis Pérez | España |
| Marie Dubois | Francia |
| Luca Rossi | Italia |
| … 3 filas más españolas (7 en total) | |
Base de datos demo para IN
Observa qué columnas devuelve la consulta y cómo se nombran con AS. Ese alias es lo que verás en la cuadrícula del editor.
| ID_Cliente | Nombre_Cliente | Ciudad | Pais | N_Ventas |
|---|---|---|---|---|
| 1 | Ana García | Madrid | España | 120 |
| 2 | Luis Pérez | Barcelona | España | 85 |
| 3 | María López | Valencia | España | 200 |
| 4 | Carlos Ruiz | Madrid | España | 45 |
| 5 | Elena Torres | Sevilla | España | 67 |
| 6 | John Smith | London | UK | 150 |
| 7 | Marie Dubois | Paris | Francia | 92 |
| 8 | Hans Müller | Berlin | Alemania | 78 |
| 9 | Luca Rossi | Roma | Italia | 110 |
| 10 | Sofia Anders | Stockholm | Suecia | 55 |
Base de datos demo para IN
| ID_Cliente | Nombre_Cliente | Ciudad | Pais | N_Ventas |
|---|---|---|---|---|
| 1 | Ana García | Madrid | España | 120 |
| 2 | Luis Pérez | Barcelona | España | 85 |
| 3 | María López | Valencia | España | 200 |
| 4 | Carlos Ruiz | Madrid | España | 45 |
| 5 | Elena Torres | Sevilla | España | 67 |
| 6 | John Smith | London | UK | 150 |
| 7 | Marie Dubois | Paris | Francia | 92 |
| 8 | Hans Müller | Berlin | Alemania | 78 |
| 9 | Luca Rossi | Roma | Italia | 110 |
| 10 | Sofia Anders | Stockholm | Suecia | 55 |
NOT IN en SQL
NOT IN
devuelve filas cuyo valor no está en la lista. Aquí, clientes que no son de España ni del Reino Unido (
'UK'
en nuestra base de datos):
IN con subconsulta SELECT
La lista también puede generarse con otra consulta
SELECT
. Aquí, clientes cuyo país también tiene proveedores:
Países con proveedores
SELECT *
FROM Clientes
WHERE Pais IN (SELECT Pais FROM Proveedores);
Resumen
INcomprueba si un valor está en una lista.NOT INexcluye una lista.- Equivalente a varias condiciones
OR, pero más legible. - La lista puede venir de una subconsulta
SELECT.
Cómo practicar en el editor
1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.