SQL UNION

Summary: this tutorial shows you how to use the SQL UNION to combine two or more result sets from multiple queries and explains the difference between UNION and UNION ALL.

Introduction to SQL UNION operator

The UNION operator combines result sets of two or more SELECT statements into a single result set. The following statement illustrates how to use the UNION operator to combine result sets of two queries:

SELECT 
    column1, column2
FROM
    table1 
UNION [ALL]
SELECT 
    column3, column4
FROM
    table2;Code language: SQL (Structured Query Language) (sql)

To use the UNION operator, you write the dividual SELECT statements and join them by the keyword UNION.

The columns returned by the SELECT statements must have the same or convertible data type, size, and be the same order.

The database system processes the query by executing two SELECT statements first. Then, it combines two individual result sets into one and eliminates duplicate rows. To eliminate the duplicate rows, the database system sorts the combined result set by every column and scans it for the matching rows located next to one another.

To retain the duplicate rows in the result set, you use the UNION ALL operator.

Suppose, we have two result sets A(1,2) and B(2,3). The following picture illustrates A UNION B:

SQL UNION

And the following picture illustrates A UNION ALL B

SQL UNION ALL

The union is different from the join that the join combines columns of multiple tables while the union combines rows of the tables.

The SQL UNION examples

SQL UNION example

To get the data from the A table, you use the following SELECT statement:

SELECT 
    id
FROM
    A;Code language: SQL (Structured Query Language) (sql)
Table A data

To retrieve the data from the B table, you use the following statement:

SELECT 
    id
FROM
    B;Code language: SQL (Structured Query Language) (sql)
Table B data

To combine result sets of these two queries, you use the UNION operator as follows:

SELECT
	id
FROM
	a
UNION
SELECT
	id
FROM
	b;Code language: SQL (Structured Query Language) (sql)
SQL UNION example

The result set includes only 3 rows because the UNION operator removes one duplicate row.

SQL UNION ALL example

To retain the duplicate row, you use the UNION ALL operator as follows:

SQL UNION ALL example

SQL UNION with ORDER BY example

To sort the result set, you place the ORDER BY clause after all the SELECT statements as follows:

SELECT
	id
FROM
	a
UNION
SELECT
	id
FROM
	b
ORDER BY id DESC;Code language: SQL (Structured Query Language) (sql)
SQL UNION ORDER BY example

The database system performs the following steps:

  1. First, execute each SELECT statement individually.
  2. Second, combine result sets and remove duplicate rows to create the combined result set.
  3. Third, sort the combined result set by the column specified in the ORDER BY clause.

In practice, we often use the UNION operator to combine data from different tables. See the following employees and dependents tables:

employees_dependents_tables

The following statement uses the UNION operator to combine the first name and last name of employees and dependents.

SELECT
	first_name,
	last_name
FROM
	employees
UNION
SELECT
	first_name,
	last_name
FROM
	dependents
ORDER BY
	last_name;Code language: SQL (Structured Query Language) (sql)

Try It

SQL UNION practical example

In this tutorial, you have learned how to use the UNION operator to combine two or more result sets from multiple queries.

Was this tutorial helpful ?