IOKELU
Nivel: Intermedio
💡 Prueba las consultas:
Puedes ejecutar cualquier consulta SQL en nuestra consola interactiva: Abrir consola SQL →

IN en SQL: filtra múltiples valores de forma elegante

La cláusula IN permite comprobar si un valor coincide con cualquiera dentro de una lista. Es más limpio, más rápido y más legible que usar múltiples condiciones con OR.

1. ¿Qué es IN?

IN permite comprobar si un valor coincide con cualquiera dentro de una lista. Es equivalente a usar múltiples OR, pero mucho más limpio.


SELECT * FROM usuarios
WHERE ciudad IN ('Madrid', 'Barcelona', 'Valencia');
    

2. IN con números


SELECT * FROM productos
WHERE id IN (1, 3, 5);
    

Devuelve productos con id 1, 3 o 5.

3. IN con texto


SELECT * FROM usuarios
WHERE nombre IN ('Ana', 'Luis');
    

4. NOT IN


SELECT * FROM usuarios
WHERE ciudad NOT IN ('Madrid', 'Sevilla');
    

5. IN con subconsultas

IN también puede usarse con subconsultas, lo que lo hace extremadamente poderoso.


SELECT nombre FROM usuarios
WHERE id IN (
    SELECT usuario_id FROM pedidos
);
    

6. Ejemplos prácticos


SELECT * FROM empleados WHERE departamento IN ('IT', 'Ventas');
SELECT * FROM productos WHERE categoria IN ('Ropa', 'Electrónica');
SELECT * FROM usuarios WHERE id IN (2, 4, 6);
SELECT * FROM pedidos WHERE estado NOT IN ('Cancelado', 'Pendiente');
    

7. Ejercicios para practicar

8. Mini‑proyecto: Filtrar pedidos por estado


CREATE TABLE pedidos (
    id INT PRIMARY KEY,
    producto VARCHAR(50),
    estado VARCHAR(50)
);

INSERT INTO pedidos VALUES
(1, 'Teclado', 'Enviado'),
(2, 'Ratón', 'Pendiente'),
(3, 'Monitor', 'Cancelado');

SELECT * FROM pedidos
WHERE estado IN ('Enviado', 'Pendiente');
    

9. Errores comunes

10. Preguntas frecuentes

¿IN es más rápido que OR?

Sí, en la mayoría de motores SQL.

¿Puedo usar IN con subconsultas?

Sí, y es una de sus mayores ventajas.


Siguiente guía

SQL Intermedio – IS NULL →