Operaciones de conjuntos · coincidencias

INTERSECT

INTERSECT compara dos resultados compatibles y devuelve únicamente las filas completas que aparecen en ambos.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué problema resuelve

INTERSECT sirve para responder preguntas del tipo «¿qué elementos pertenecen a los dos grupos?». Cada SELECT produce un conjunto y el operador conserva la parte común.

La comparación se realiza sobre la fila completa. Si seleccionas dos columnas, ambas deben coincidir para que la fila forme parte del resultado.

Prepara consultas compatibles

Los dos SELECT deben devolver el mismo número de columnas y tipos comparables en la misma posición. Los nombres finales suelen proceder del primer SELECT.

Estructura
SELECT columna
FROM primera_fuente
INTERSECT
SELECT columna
FROM segunda_fuente;

INTERSECT elimina duplicados. El resultado representa coincidencias únicas. Si necesitas contar cuántas veces aparece cada valor, prepara primero esa información con una agregación.

Ejemplo guiado

Queremos los clientes que están registrados en Madrid y además permanecen activos:

SQL
SELECT nombre
FROM clientes
WHERE ciudad = 'Madrid'
INTERSECT
SELECT nombre
FROM clientes
WHERE activo = 1
ORDER BY nombre;
Resultado comprobado
nombre
Ana Torres
Marta Ruiz
Noa Vidal

Pablo Sanz vive en Madrid, pero no aparece porque su valor de activo es 0. Las otras tres personas cumplen las dos condiciones.

Cuándo usar un JOIN

INTERSECT compara resultados ya formados. Un JOIN relaciona filas mediante columnas y permite traer información adicional de varias tablas. Si solo necesitas saber qué valores están en ambos grupos, INTERSECT puede expresar la intención con mucha claridad.

Error frecuente

Seleccionar columnas diferentes en cada lado

No combines, por ejemplo, un identificador numérico con un nombre de texto solo porque ambos SELECT devuelven una columna. Las posiciones deben representar el mismo tipo de dato y la misma idea.

Comprueba lo aprendido

Intermedia · dos conjuntos

Encuentra clientes de Bilbao con pedidos

Devuelve, en orden alfabético, los nombres de clientes que viven en Bilbao y que además aparecen en algún pedido. Resuelve la coincidencia con INTERSECT.

Compatibilidad entre motores

PostgreSQL, SQLite, SQL Server y Oracle admiten INTERSECT. MySQL lo incorporó en la versión 8.0.31; una instalación anterior necesita expresar la misma intención con EXISTS, un JOIN u otra estrategia equivalente.

La prioridad al mezclar varios operadores de conjuntos puede sorprender. Usa paréntesis cuando combines INTERSECT con UNION o EXCEPT y la lectura no sea inequívoca.

Qué debes recordar

  • INTERSECT conserva las filas completas presentes en ambos resultados.
  • Los dos SELECT deben devolver columnas compatibles y con el mismo significado.
  • El resultado elimina duplicados salvo que el motor admita y uses INTERSECT ALL.
  • Si necesitas combinar columnas de varias tablas, probablemente buscas un JOIN.

Conceptos relacionados

Fuentes técnicas

La explicación se ha contrastado con documentación oficial: