Compatibilidad de cantidad y tipos de columnas
Conozca las reglas que deben cumplir los conjuntos de resultados para combinarse y los errores habituales de incompatibilidad
Compatibilidad de cantidad y tipos de columnas es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 2 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.
Las reglas de compatibilidad que evalúan los entrevistadores
Todas las operaciones de conjuntos (UNION, INTERSECT, EXCEPT) requieren que los dos conjuntos de resultados sean compatibles para UNION. Los entrevistadores preguntan por esto para comprobar si conoce las formas menos evidentes en que estas consultas pueden fallar.
Dos reglas determinan la compatibilidad: el mismo número de columnas y tipos de datos compatibles posición por posición. Si incumple cualquiera de las dos, obtendrá un error o un resultado inesperado.
Regla 1: mismo número de columnas
Ambas consultas deben proyectar el mismo número de columnas. Si la primera consulta devuelve tres columnas y la segunda devuelve dos, la base de datos rechaza la instrucción.
Este es el error de operaciones de conjuntos más común en las entrevistas, especialmente después de que alguien edita una rama y olvida modificar la otra.
SELECT id, name, city FROM a
UNION
SELECT id, name FROM b;
-- ERROR: each UNION query must have the same number of columnsRegla 2: tipos compatibles según la posición
Las columnas se emparejan por posición, no por nombre. La primera columna de la consulta uno se empareja con la primera columna de la consulta dos, y así sucesivamente. Cada par debe tener tipos compatibles.
Compatible suele significar que se puede convertir implícitamente: un INT y un BIGINT son compatibles; un INT y un DATE, por lo general, no lo son.
SELECT id, signup_date FROM a
UNION
SELECT id, signup_date FROM b;
-- positions: (int,date) vs (int,date) -> OKLo importante es la posición, no el nombre
Una trampa sutil: las columnas pueden tener nombres diferentes y aun así combinarse, siempre que las posiciones coincidan según el tipo. Por el contrario, si los nombres coinciden pero están en el orden incorrecto, los datos quedarán desalineados.
Lea siempre las operaciones de conjuntos columna por columna, según su posición. Los entrevistadores suelen intercambiar columnas para comprobar este conocimiento.
SELECT name, id FROM a
UNION ALL
SELECT id, name FROM b;
-- name<->id swapped: types may clash or data lands in wrong columnLos nombres de las columnas de salida
El conjunto de resultados toma sus nombres de columna de la primera consulta. Las etiquetas de la segunda consulta se descartan. Para controlar los encabezados, asigne alias a las columnas de la primera rama.
Por eso un ORDER BY posterior debe hacer referencia a los nombres de la primera consulta o usar posiciones ordinales.
SELECT id AS user_id, city AS location FROM a
UNION ALL
SELECT id, town FROM b;
-- output headers: user_id, locationConversión implícita de tipos
Cuando dos columnas emparejadas por posición tienen tipos diferentes pero compatibles, el motor elige un tipo de resultado lo bastante amplio para contener ambos. La combinación de un INT y un DECIMAL normalmente produce DECIMAL.
Mencionar esta conversión en una entrevista demuestra un conocimiento profundo: sabe que la columna no produce un error, sino que se convierte al tipo más amplio.
SELECT amount FROM int_table -- INT
UNION ALL
SELECT amount FROM dec_table; -- DECIMAL
-- result column is DECIMALRellenar las columnas que faltan con NULL
Cuando dos consultas difieren naturalmente en su estructura, puede alinearlas añadiendo columnas de relleno. Una técnica habitual consiste en seleccionar NULL (a menudo convertido a un tipo específico) para completar una posición que existe en la otra rama.
Convertir NULL evita que el motor tenga que inferir un tipo y mantiene la compatibilidad entre las columnas.
SELECT id, phone, CAST(NULL AS VARCHAR) AS email FROM a
UNION ALL
SELECT id, CAST(NULL AS VARCHAR), email FROM b;Un fallo práctico por incompatibilidad de tipos
Aquí, la segunda columna es una fecha en una rama y una cadena de texto en la otra. Los motores estrictos rechazan esta combinación; los más permisivos pueden convertir los valores de forma impredecible. La solución segura es usar un CAST explícito para que ambos lados coincidan.
En las entrevistas, proponga la conversión explícita en lugar de confiar en la conversión implícita.
SELECT id, CAST(event_date AS VARCHAR) FROM a
UNION ALL
SELECT id, label FROM b;
-- both second columns now VARCHAR -> compatibleEstas reglas se aplican a todos los operadores de conjuntos
Las reglas sobre el número de columnas y la compatibilidad de tipos son idénticas para UNION, UNION ALL, INTERSECT y EXCEPT. Todos apilan conjuntos de resultados verticalmente y requieren entradas compatibles para UNION.
Por tanto, una única lista mental sirve para todas las operaciones de conjuntos: contar las columnas, comprobar los tipos según la posición y controlar los nombres desde la primera consulta.
SELECT id, city FROM a
INTERSECT
SELECT id, city FROM b;
-- same compatibility rules as UNIONLa lista de comprobación previa
Antes de combinar conjuntos de resultados, verifique lo siguiente:
- El mismo número de columnas en todas las ramas.
- Que cada par según su posición tenga tipos compatibles (haga una conversión explícita si tiene dudas).
- Que las columnas estén en el mismo orden lógico.
- Que los alias estén definidos en la primera consulta para obtener nombres de salida claros.
Decir esta lista en voz alta durante una entrevista evita errores de desalineación que, de otro modo, podrían pasar desapercibidos.
Cómo encajan todos los conceptos
La mayoría de los fallos de compatibilidad se pueden evitar. Los errores son evidentes cuando difiere el número de columnas y silenciosos cuando las columnas se intercambian o se convierten de forma inesperada. Leer las consultas por posición de columna y realizar conversiones deliberadas mantiene correctas las operaciones de conjuntos.
Una respuesta segura menciona ambas reglas, explica la correspondencia por posición e indica que los nombres de salida provienen de la primera consulta.
Comprobación rápida
¿Cómo decide SQL qué columnas de dos ramas UNION se corresponden entre sí?
Resumen
Conclusiones clave:
- Todos los operadores de conjuntos necesitan el mismo número de columnas en todas las ramas.
- Las columnas se emparejan por posición y cada par debe tener tipos compatibles.
- Los tipos compatibles pueden convertirse a un tipo común más amplio.
- Use
CAST(NULL AS type)para completar estructuras que difieren. - Los nombres de salida provienen de la primera consulta.
Preguntas frecuentes
¿La lección «Compatibilidad de cantidad y tipos de columnas» es gratis?
Sí — el texto completo de «Compatibilidad de cantidad y tipos de columnas» 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 «Compatibilidad de cantidad y tipos de columnas»?
Conozca las reglas que deben cumplir los conjuntos de resultados para combinarse y los errores habituales de incompatibilidad 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 2 de 4.
¿Cuánto tiempo toma la lección «Compatibilidad de cantidad y tipos de columnas»?
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
- UNION frente a UNION ALL
- Compatibilidad de cantidad y tipos de columnas
- INTERSECT y EXCEPT para comparar
- Emular operaciones de conjuntos con joins