# MySQL Unions

# Union operator

The UNION operator is used to combine the result-set (only distinct values) of two or more SELECT statements.

Query: (To selects all the different cities (only distinct values) from the "Customers" and the "Suppliers" tables)

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

Result:

Number of Records: 10

City
------
Aachen
Albuquerque
Anchorage
Annecy
Barcelona
Barquisimeto
Bend
Bergamo
Berlin
Bern

# Union ALL

UNION ALL to select all (duplicate values also) cities from the "Customers" and "Suppliers" tables.

Query:

SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

Result:

Number of Records: 12

City
-------
Aachen
Albuquerque
Anchorage
Ann Arbor
Annecy
Barcelona
Barquisimeto
Bend
Bergamo
Berlin
Berlin
Bern

# UNION ALL With WHERE

UNION ALL to select all(duplicate values also) German cities from the "Customers" and "Suppliers" tables. Here Country="Germany" is to be specified in the where clause.

Query:

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

Result:

Number of Records: 14

```sql
|City|Country
|Aachen|Germany
|Berlin|Germany
|Berlin|Germany
|Brandenburg|Germany
|Cunewalde|Germany
|Cuxhaven|Germany
|Frankfurt|Germany
|Frankfurt a.M. |Germany
|Köln|Germany
|Leipzig|Germany
|Mannheim|Germany
|München|Germany
|Münster|Germany
|Stuttgart|Germany



#### Syntax


- SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
<li>SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;</li>
<li>SELECT column_name(s) FROM table1
WHERE col_name="XYZ"
UNION ALL
SELECT column_name(s) FROM table2
WHERE col_name="XYZ";</li>



#### Remarks


`UNION DISTINCT` is the same as `UNION`; it is slower than `UNION ALL` because of a de-duplicating pass.  A good practice is to always spell out `DISTINCT` or `ALL`, thereby signaling that you thought about which to do.