En este capítulo te mostraré de qué forma funciona el operador IN de SQL, con el que filtraremos resultados siguiendo varias opciones.

Sintaxis básica del operador IN de SQL

Esta es la sintaxis básica del operador IN:

SELECT columnas
FROM tabla
WHERE columna IN 
(valor1, valor2, valor3, ...);

Ejemplo práctico de uso del operador

Veamos un ejemplo con este operador. Vamos a seleccionar unos cuantos campos de la tabla city de la base de datos world de MySQL.

SELECT * 
FROM city
WHERE ID IN 
(10, 100, 10000000, 300, 700, 1000);

El resultado de esto, son todas las ciudades que coinciden con los ID proporcionados en los paréntesis del IN.

Operador IN SQL

Si te fijas, he puesto 6 ID y han salido 5 resultados. Esto es porque el registro con ID 10000000 no existe. Todo lo que no coincida, se descarta sin producir errores.

Utilizar varias tablas en SQL con el operador IN

Si antes de empezar este curso de SQL sabías al menos lo básico, es posible, que te hayan dicho que para consultar datos de diferentes tablas en una sola consulta, tienes que utilizar uniones. Este es un tema que veremos pronto. Sin embargo, he de decir, que gracias a las subconsultas podemos utilizar diferentes tablas en una misma consulta:


SELECT *
FROM city
WHERE CountryCode IN 
	(SELECT Code 
    FROM country 
    WHERE Name IN 
    ('Australia', 'Mexico')
);
operador in de sql

Aquí, en la consulta principal, estoy seleccionando todos los registros de la tabla de ciudades. A esto, le filtro con IN una subconsulta, para obtener resultados basados en lo que devuelva la subconsulta.

La subconsulta, selecciona otra tabla diferente, la de países. En ella, con otro WHERE IN, busca los registros de país «Australia» y «México». Si existen, me da dos resultados de estos países. Estos países, en la tabla country, tiene un campo llamado Code, que al igual que la tabla city, tiene códigos de país como AUS y MEX. Finalmente, esos dos resultados se quedan para el WHER IN principal, que muestra todas las ciudades con código AUS y MEX.

SELECT Code 
FROM country 
WHERE Name IN 
('Australia', 'Mexico');
where in sql

Evidentemente, sería más sencillo hacer esto:

SELECT *
FROM city
WHERE CountryCode IN 
('AUS','MEX');

Pero puede ser que no sepas cuáles son los códigos, pero sí que recuerdes los países. O que en una hipotética base de datos, los códigos asociados a productos puedan cambiar y no quieras errores por ello.

Sea de la forma que sea, esto te será útil en el futuro.

No te pierdas nada del Máster en SQL.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Trending