SQL UNION
The UNION operator in SQL is used to combine the result sets of two or more SELECT statements. Each SELECT statement within the UNION must have the same number of columns in the result sets with similar data types, and the columns must also be in the same order.
Key Points:
- The
UNIONoperator selects only distinct values by default. - If you want to include duplicate values, use
UNION ALL. - The column names in the result set are usually taken from the first
SELECTstatement.
Syntax:
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
Example:
Consider two tables, employees and contractors, with the following data:
Table: employees
| id | name | department |
|---|---|---|
| 1 | Alice | HR |
| 2 | Bob | IT |
| 3 | Charlie | Sales |
Table: contractors
| id | name | department |
|---|---|---|
| 4 | David | IT |
| 5 | Eve | Marketing |
| 6 | Frank | Sales |
To combine the names from both tables into a single result set, we can use the UNION operator:
SELECT name, department
FROM employees
UNION
SELECT name, department
FROM contractors;
Output:
| name | department |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
| David | IT |
| Eve | Marketing |
| Frank | Sales |
Using UNION ALL:
If we use UNION ALL instead, all rows including duplicates will be included:
SELECT name, department
FROM employees
UNION ALL
SELECT name, department
FROM contractors;
Output with UNION ALL:
| name | department |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
| David | IT |
| Eve | Marketing |
| Frank | Sales |
Since there were no duplicates in our example data, the output remains the same. However, if there were any duplicate rows between employees and contractors, UNION ALL would include them all in the final result set, whereas UNION would filter them out.
Practical Example with Duplicate Values:
Updated Table: contractors
| id | name | department |
|---|---|---|
| 4 | David | IT |
| 5 | Eve | Marketing |
| 6 | Charlie | Sales |
Using UNION:
SELECT name, department
FROM employees
UNION
SELECT name, department
FROM contractors;
Output:
| name | department |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
| David | IT |
| Eve | Marketing |
Using UNION ALL:
SELECT name, department
FROM employees
UNION ALL
SELECT name, department
FROM contractors;
Output with UNION ALL:
| name | department |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
| David | IT |
| Eve | Marketing |
| Charlie | Sales |
As you can see, UNION ALL includes the duplicate entry of "Charlie" in the final result set.
Summary:
- Use
UNIONto combine result sets and automatically remove duplicates. - Use
UNION ALLto combine result sets without removing duplicates.
Your Feedback
Help us improve by sharing your thoughts
At Online Learner, we're on a mission to ignite a passion for learning and empower individuals to reach their full potential. Founded by a team of dedicated educators and industry experts, our platform is designed to provide accessible and engaging educational resources for learners of all ages and backgrounds.
Terms Disclaimer About Us Contact Us
Copyright 2023-2025 © All rights reserved.
