UNION vs UNION ALL
Parte de la sección Más allá de lo básico del Journey de SQL de Coddy — lección 16 de 27.
Conociste UNION en Fundamentos: apila dos conjuntos de resultados uno encima del otro. Por defecto, también elimina duplicados, lo que conlleva una ordenación adicional.
SELECT name FROM authors
UNION
SELECT name FROM editorsUNION ALL realiza el mismo apilamiento pero mantiene los duplicados. Es más rápido y casi siempre es lo que quieres cuando sabes que los dos lados no pueden producir la misma fila, o cuando realmente quieres contar cada ocurrencia.
SELECT name FROM authors
UNION ALL
SELECT name FROM editorsAmbos lados deben devolver el mismo número de columnas, en el mismo orden, con tipos compatibles.
Desafío
FácilTablas y columnas disponibles:
<strong>online_orders</strong>:<strong>order_no</strong>,<strong>amount</strong><strong>retail_orders</strong>:<strong>ticket_no</strong>,<strong>total</strong>
Las dos tablas rastrean pedidos de diferentes canales con diferentes nombres de columna. Devuelve una lista combinada de cada pedido con las columnas:
channel:'online'o'retail'order_id:order_node online,ticket_node retailamount: el total del pedido (deamountototal)
Mantén cada fila (sin deduplicación). Ordena por amount de forma descendente.
Hoja de referencia
UNION apila dos conjuntos de resultados y elimina duplicados (más lento). UNION ALL apila y mantiene los duplicados (más rápido):
SELECT name FROM authors
UNION ALL
SELECT name FROM editorsAmbos lados deben tener el mismo número de columnas, en el mismo orden, con tipos compatibles. Los nombres de las columnas provienen del primer SELECT.
Pruébalo tú mismo
-- dos SELECTs alineados a las mismas 3 columnas, unidos por UNION ALL
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.