You can use the `UNION`, `INTERSECT`, and `EXCEPT` operators to combine multiple query result sets to a single result set.

## Syntax

``````query
{ UNION [ ALL ] | INTERSECT | EXCEPT }
query     ``````

## Parameters

• `UNION`: returns the union of two result sets.
• `UNION ALL`: returns the union of two result sets with duplicate rows retained. The `ALL` keyword indicates that the duplicate rows are retained after the `UNION` calculation.
• `INTERSECT`: returns the intersection of two result sets.
• `EXCEPT`: returns rows that appear in the first result set, but not in the other result set.

## Calculation sequence

• The `UNION` and `EXCEPT` operators are left-associative. That is, if you do not use parentheses () to change the calculation sequence, the calculation starts from left to right.

For example, in the following statement, the `UNION` operator returns the union of `T1` and `T2`. Then, the `EXCEPT` operator returns the rows that appear only in the union returned by the `UNION` operator, but not T3.

``````select * from t1
union
select * from t2
except
select * from t3
order by c1;                 ``````
• In the same statement, the `INTERSECT` operator is prioritized over the `UNION` and `EXCEPT` operators.

For example, the following statement finds the intersection of `T2` and `T3`, and then the union of the intersection and `T1`.

``````select * from t1
union
select * from t2
intersect
select * from t3
order by c1;                  ``````
• You can use parentheses () to change the calculation sequence of these operators.

For example, the following statement finds the union of `T1` and `T2`, and then the intersection of the union and `T3`.

``````(select * from t1
union
select * from t2)
intersect
(select * from t3)
order by c1;                 ``````