Índice

Unir los resultados de varias consultas

MySQL admite la utilización del operador UNION que lleva a cabo la unión de los resultados de varias consultas.

Sintaxis

   consulta_SELECT 
UNION [ALL | DISTINCT] 
   consulta_SELECT 
[UNION ...] 
[ORDER BY orden]

Las sentencias SELECT deben tener el mismo número de expresiones y las expresiones correspondientes deben tener normalmente el mismo tipo (según la documentación). En la práctica, si las expresiones correspondientes no son del mismo tipo, parece que son convertidas en cadena de caracteres para realizar la unión.

El título de las columnas del resultado final es definido por la primera consulta.

De manera predeterminada, todas las líneas devueltas son distintas; el mismo resultado se obtiene utilizando la opción DISTINCT. La utilización de la opción ALL permite conservar todas las filas, incluso las duplicadas.

Las sentencias SELECT no deben contener la cláusula ORDER BY; pueden incluir, sin embargo, combinaciones, subconsultas y las cláusulas WHERE, GROUP BY, etc. Para mejorar la legibilidad de las consulta, las sentencias SELECT pueden ponerse entre paréntesis.

El resultado final de la unión puede ordenarse mediante una cláusula ORDER BY, con la misma sintaxis que para una sentencia SELECT simple (véase el capítulo Introducción a MySQL - Ejecutar consultas SQL simples).

Ejemplos

mysql> SELECT titulo FROM catalogo 
    ->   UNION 
    -> SELECT IFNULL(CONCAT(titulo,’ ...