Saltar al contenido principal
Puede usar UNION especificando explícitamente UNION ALL o UNION DISTINCT. Si no especifica ALL ni DISTINCT, dependerá de la configuración union_default_mode. La diferencia entre UNION ALL y UNION DISTINCT es que UNION DISTINCT aplicará una operación de eliminación de duplicados al resultado de la unión; es equivalente a SELECT DISTINCT sobre una subconsulta que contiene UNION ALL. Puede usar UNION para combinar cualquier número de consultas SELECT uniendo sus resultados. Ejemplo:
Query
SELECT CounterID, 1 AS table, toInt64(count()) AS c
    FROM test.hits
    GROUP BY CounterID

UNION ALL

SELECT CounterID, 2 AS table, sum(Sign) AS c
    FROM test.visits
    GROUP BY CounterID
    HAVING c > 0
Las columnas del resultado se emparejan por su índice (el orden dentro de SELECT). Si los nombres de las columnas no coinciden, los nombres del resultado final se toman de la primera consulta. La conversión de tipos se realiza en las uniones. Por ejemplo, si dos consultas que se combinan tienen el mismo campo con tipos Nullable y no Nullable de un tipo compatible, el UNION resultante tendrá un campo de tipo Nullable. Las consultas que forman parte de UNION pueden ir entre (). ORDER BY y LIMIT se aplican a cada consulta por separado, no al resultado final. Si necesita aplicar una conversión al resultado final, puede colocar todas las consultas con UNION en una subconsulta en la cláusula FROM. Si usa UNION sin especificar explícitamente UNION ALL o UNION DISTINCT, puede indicar el modo de unión mediante la configuración union_default_mode. Los valores de esta configuración pueden ser ALL, DISTINCT o una cadena vacía. Sin embargo, si usa UNION con la configuración union_default_mode establecida en una cadena vacía, se lanzará una excepción. Los siguientes ejemplos muestran los resultados de las consultas con distintos valores de esta configuración.
Query
SET union_default_mode = 'DISTINCT';
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2;
Response
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
Query
SET union_default_mode = 'ALL';
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2;
Response
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
Las consultas que forman parte de UNION/UNION ALL/UNION DISTINCT pueden ejecutarse simultáneamente y sus resultados pueden mezclarse. Ver también
Última modificación el 10 de junio de 2026