
# 集合操作
#### Union/Union ALL/Intersect/Except
**语法格式**
```
query UNION [ ALL ] | Intersect | Except query
```
**语法说明**
- UNION返回多个查询结果的并集。
- Intersect返回多个查询结果的交集。
- Except返回多个查询结果的差集。
**注意事项**
- 集合运算是以一定条件将表首尾相接，所以其中每一个SELECT语句返回的列数必须相同，列的类型一定要相同，列名不一定要相同。
- UNION默认是去重的，UNION ALL是不去重的。
**示例**
输出Orders1和Orders2的并集，不包含重复记录。
```
insert into temp SELECT  * FROM Orders1
  UNION SELECT  * FROM Orders2;
```
#### IN
**语法格式**
```
SELECT [ ALL | DISTINCT ]   { * | projectItem [, projectItem ]* }
  FROM tableExpression
  WHERE column_name IN (value (, value)* ) | query
```
**语法说明**
IN操作符允许在where子句中规定多个值。若表达式在给定的表子查询中存在，则返回 true 。
**注意事项**
子查询表必须由单个列构成，且该列的数据类型需与表达式保持一致。
**示例**
输出Orders中NewProducts中product的user和amount信息。
```
insert into temp SELECT user, amount
FROM Orders
WHERE product IN (
    SELECT product FROM NewProducts
);
```
