0Pricing
SQL Interview Prep · Lección

INTERSECT y EXCEPT para comparar

Encuentre las filas comunes y diferentes entre dos conjuntos de datos

INTERSECT y EXCEPT para comparar es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.

Los operadores de comparación

INTERSECT y EXCEPT son los operadores de conjuntos que sirven para comparar dos conjuntos de resultados en lugar de combinarlos. Los entrevistadores recurren a ellos en preguntas como "qué clientes están en ambas listas" o "qué filas están en A pero no en B".

  • INTERSECT = filas presentes en ambas consultas.
  • EXCEPT = filas de la primera consulta que no están en la segunda.

Qué devuelve INTERSECT

INTERSECT devuelve únicamente las filas distintas que aparecen en ambos conjuntos de resultados. Una fila debe coincidir en todas sus columnas para considerarse común.

Al igual que UNION, un INTERSECT simple elimina los duplicados y devuelve cada fila común una sola vez.

SELECT customer_id FROM orders_2023
INTERSECT
SELECT customer_id FROM orders_2024;
-- customers who ordered in BOTH years

Qué devuelve EXCEPT

EXCEPT (denominado MINUS en Oracle) devuelve las filas distintas de la primera consulta que no aparecen en la segunda. Es direccional: A EXCEPT B es diferente de B EXCEPT A.

Esta es la forma natural de encontrar registros que faltan en un segundo conjunto de datos.

SELECT customer_id FROM orders_2023
EXCEPT
SELECT customer_id FROM orders_2024;
-- ordered in 2023 but NOT in 2024 (churned)

EXCEPT no es simétrico

Un punto habitual en las entrevistas: EXCEPT es direccional. Intercambiar las dos consultas responde a una pregunta diferente.

  • A EXCEPT B = está en A, no en B.
  • B EXCEPT A = está en B, no en A.

INTERSECT, en cambio, es simétrico: A INTERSECT B equivale a B INTERSECT A.

-- new customers in 2024 (not seen in 2023):
SELECT customer_id FROM orders_2024
EXCEPT
SELECT customer_id FROM orders_2023;

Duplicados y el valor predeterminado DISTINCT

Los operadores INTERSECT y EXCEPT estándar trabajan con filas distintas, al igual que UNION. Las filas duplicadas de entrada se agrupan antes de la comparación.

Algunas bases de datos admiten INTERSECT ALL y EXCEPT ALL, que respetan la multiplicidad, pero son menos habituales. Si el entrevistador no especifica ALL, suponga una semántica de filas distintas.

SELECT city FROM a
INTERSECT ALL
SELECT city FROM b;
-- multiplicity-aware (Postgres supports this; MySQL 8+ too)

Comparar filas completas para determinar la igualdad

Ambos operadores comparan filas completas en todas las columnas seleccionadas. Dos filas son iguales únicamente cuando coinciden todas sus columnas. Esto los hace ideales para detectar si dos tablas contienen datos idénticos.

Seleccione el conjunto completo de columnas que le interese para que la comparación sea significativa.

SELECT id, name, email FROM prod_users
EXCEPT
SELECT id, name, email FROM staging_users;
-- rows in prod that differ from / are missing in staging

El patrón de diferencia de tablas en ambos sentidos

Para comprobar si dos tablas son idénticas, ejecute EXCEPT en ambos sentidos y combine las diferencias. Si el resultado combinado está vacío, las tablas coinciden exactamente.

Esta es una respuesta clásica en entrevistas sobre validación de datos para comprobaciones de migración y conciliación.

(SELECT * FROM table_a EXCEPT SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_b EXCEPT SELECT * FROM table_a);
-- empty result => tables are identical

Cómo se tratan los valores NULL

En las operaciones de conjuntos, dos valores NULL se consideran iguales entre sí al buscar coincidencias, lo que difiere del comportamiento habitual de NULL = NULL, cuyo resultado es UNKNOWN.

Por tanto, una fila con un NULL en una columna coincidirá con otra fila que tenga NULL en la misma posición. Los entrevistadores evalúan este punto porque contradice las reglas de comparación habituales.

-- (1, NULL) INTERSECT (1, NULL) -> returns (1, NULL)
SELECT id, region FROM a
INTERSECT
SELECT id, region FROM b;

Precedencia de los operadores de conjuntos

Al combinar operadores, INTERSECT normalmente tiene una precedencia mayor que UNION y EXCEPT según el estándar SQL. Para evitar ambigüedades, agrupe las ramas entre paréntesis.

Indicar que usa paréntesis para hacer explícito el orden de evaluación demuestra madurez durante una entrevista.

(SELECT id FROM a EXCEPT SELECT id FROM b)
UNION
(SELECT id FROM c);

Elegir entre INTERSECT/EXCEPT y las combinaciones

INTERSECT y EXCEPT son concisos y comparan filas completas con eliminación de duplicados incorporada. Las combinaciones son más flexibles (puede devolver columnas adicionales y elegir cómo gestionar los duplicados).

Prefiera los operadores de conjuntos cuando la pregunta sea exclusivamente "qué filas son comunes o faltan". Cambie a combinaciones cuando necesite columnas de ambos lados o cuando el dialecto no admita estos operadores.

Cómo encajan todos los conceptos

Un resumen que puede recitar: "INTERSECT devuelve las filas presentes en ambas consultas y es simétrico; EXCEPT devuelve las filas presentes en la primera pero no en la segunda y es direccional. Ambos comparan filas completas, tratan los NULL como iguales y devuelven resultados distintos de forma predeterminada."

Añada el truco de la diferencia con EXCEPT en ambos sentidos para la pregunta de seguimiento sobre conciliación de datos y cubrirá el tema por completo.

Comprobación rápida

Quiere obtener los clientes que realizaron un pedido en 2023, pero NO realizaron ninguno en 2024 (clientes que abandonaron).

Resumen

Conclusiones clave:

  • INTERSECT = filas presentes en ambas consultas; es simétrico.
  • EXCEPT (MINUS en Oracle) = filas de la primera consulta que no están en la segunda; es direccional.
  • Ambos comparan filas completas y devuelven resultados distintos de forma predeterminada.
  • Los valores NULL se consideran iguales al buscar coincidencias.
  • Un EXCEPT en ambos sentidos proporciona una diferencia completa entre tablas.

Preguntas frecuentes

¿La lección «INTERSECT y EXCEPT para comparar» es gratis?

Sí — el texto completo de «INTERSECT y EXCEPT para comparar» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «INTERSECT y EXCEPT para comparar»?

Encuentre las filas comunes y diferentes entre dos conjuntos de datos Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Interview Prep?

No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «INTERSECT y EXCEPT para comparar»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?

Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. UNION frente a UNION ALL
  2. Compatibilidad de cantidad y tipos de columnas
  3. INTERSECT y EXCEPT para comparar
  4. Emular operaciones de conjuntos con joins
← Volver a SQL Interview Prep