Table of Contents
Uso del operador IN en SQL con la tabla pedidos
En este tutorial aprenderás a usar el operador IN en SQL, trabajando con la tabla pedidos
dentro de la base de datos tiendaonline
. Este operador es muy práctico cuando necesitamos comprobar si un valor está dentro de una lista, evitando escribir múltiples condiciones con OR
.
Paso 1: Seleccionar la base de datos
Primero, nos aseguramos de que trabajamos con la base de datos correcta:
USE tiendaonline;
Paso 2: Ver los registros de la tabla pedidos
Antes de aplicar consultas, revisamos la información disponible en la tabla:
SELECT * FROM pedidos;
Aquí podemos observar columnas como id_pedido
, id_cliente
, fecha_pedido
, total
, entre otras.
¿Qué es el operador IN en SQL?
El operador IN se utiliza junto con la cláusula WHERE
para filtrar registros cuya columna contenga un valor dentro de un conjunto específico.
👉 Su ventaja principal es que simplifica las consultas cuando necesitamos comparar un campo con múltiples valores, en lugar de encadenar varias condiciones con OR
.
Paso 3: Ejemplo con IN en la tabla pedidos
Supongamos que queremos obtener todos los pedidos cuyo total sea 750.00 o 550.00. La consulta sería:
SELECT * FROM pedidos AS p
WHERE p.total IN (750.00, 550.00);
🔹 Esta consulta devuelve todos los pedidos cuyo valor total coincida con alguno de los valores de la lista (750.00
o 550.00
).
⚡ Es más clara y eficiente que escribir varias condiciones con OR
.
Comparación con el operador OR
Si hiciéramos lo mismo con OR
, la consulta sería más extensa:
SELECT * FROM pedidos AS p
WHERE p.total = 750.00
OR p.total = 550.00;
Además, con OR
también podemos comparar distintas columnas. Por ejemplo:
SELECT * FROM pedidos AS p
WHERE p.total = 750.00
OR p.fecha_pedido = '2023-03-10';
En este caso, se seleccionan los pedidos que tengan total de 750.00 o cuya fecha sea exactamente 2023-03-10
.
Paso 4: Ejemplo con texto en IN
El operador IN
no solo funciona con números, también podemos usarlo con texto. Por ejemplo, para seleccionar pedidos realizados en ciudades concretas:
SELECT * FROM pedidos AS p
WHERE p.ciudad_entrega IN ('Madrid', 'Valencia', 'Sevilla');
Esto devuelve todos los pedidos cuya ciudad de entrega sea una de las mencionadas.
Paso 5: Ejemplo con NOT IN
El operador también puede invertirse con NOT IN
, lo que nos permite excluir registros:
SELECT * FROM pedidos AS p
WHERE p.total NOT IN (750.00, 550.00);
En este caso, se mostrarán todos los pedidos excepto los que tengan como total 750.00 o 550.00.

Ventajas de usar IN
- Es más legible y limpio que usar múltiples condiciones con
OR
. - Permite trabajar con listas dinámicas de valores.
- Puede usarse tanto con números como con cadenas de texto.
- Combinado con
NOT IN
, es muy útil para excluir múltiples valores de una sola vez.
Preguntas frecuentes sobre el operador IN en SQL
1. ¿Qué diferencia hay entre IN y OR en SQL?IN
se usa cuando comparamos una columna con múltiples valores de una lista. OR
es más flexible, ya que permite combinar condiciones de diferentes columnas.
2. ¿Puedo usar IN con subconsultas?
Sí. Es muy común usar IN
con subconsultas. Ejemplo:
SELECT * FROM pedidos
WHERE id_cliente IN (SELECT id FROM clientes WHERE ciudad = 'Madrid');
Esto devuelve todos los pedidos de clientes que viven en Madrid.
3. ¿Es más rápido usar IN o múltiples OR?
Depende del motor de base de datos, pero en general IN es más eficiente y fácil de leer.
4. ¿Qué diferencia hay entre IN y EXISTS?
IN
compara una columna con una lista de valores.EXISTS
evalúa si una subconsulta devuelve filas.
En muchos casos, se pueden usar de forma equivalente.
5. ¿Qué pasa si la lista de IN está vacía?
Si la lista está vacía, la consulta no devolverá ningún resultado, ya que no hay valores con los que comparar.
Te puede interesar:
Seguir leyendo: