【sql中union用法】在SQL中,`UNION` 是一个非常实用的运算符,用于合并两个或多个 `SELECT` 语句的结果集。使用 `UNION` 可以将不同表中的数据按照相同的列结构进行合并,并自动去除重复记录。如果需要保留重复记录,则可以使用 `UNION ALL`。
以下是对 `UNION` 用法的总结,帮助你更清晰地理解其功能和应用场景。
一、基本概念
| 术语 | 说明 |
| `UNION` | 合并多个查询结果集,去重 |
| `UNION ALL` | 合并多个查询结果集,保留所有记录(包括重复项) |
| 相同列数 | 每个 `SELECT` 语句必须返回相同数量的列 |
| 数据类型匹配 | 对应列的数据类型应尽量一致,否则可能报错 |
二、语法结构
```sql
SELECT column1, column2, ...
FROM table1
UNION [ALL
SELECT column1, column2, ...
FROM table2;
```
- `UNION` 会自动对结果进行排序并去重。
- `UNION ALL` 不会去重,效率更高。
三、使用示例
假设我们有两个表:`employees` 和 `contractors`,它们的结构如下:
employees 表:
| id | name | salary |
| 1 | Alice | 5000 |
| 2 | Bob | 6000 |
contractors 表:
| id | name | rate |
| 3 | Charlie | 80 |
| 4 | David | 90 |
现在,我们想获取所有员工和合同工的名字列表:
```sql
SELECT name FROM employees
UNION
SELECT name FROM contractors;
```
结果:
| name |
| Alice |
| Bob |
| Charlie |
| David |
如果使用 `UNION ALL`,则会包含重复项(如果有)。
四、注意事项
| 注意事项 | 说明 |
| 列名以第一个 `SELECT` 为准 | 结果集的列名由第一个 `SELECT` 语句决定 |
| 排序问题 | 使用 `ORDER BY` 时需放在最后,且只能对最终结果排序 |
| 性能影响 | `UNION` 会增加额外的去重操作,可能影响性能 |
五、适用场景
| 场景 | 说明 |
| 数据汇总 | 将多个来源的数据整合为一个结果集 |
| 去重需求 | 需要排除重复记录的情况 |
| 多表查询 | 跨表查询相似结构的数据 |
通过合理使用 `UNION`,我们可以更灵活地处理多表数据,提升SQL查询的效率和可读性。掌握其基本用法与注意事项,有助于在实际项目中更好地应用这一功能。


