mysql中union all用法
时间: 2025-05-11 20:19:17 浏览: 17
### MySQL 中 `UNION ALL` 的使用方法、示例与语法
#### 什么是 `UNION ALL`
`UNION ALL` 是 SQL 查询语句中的一个集合操作符,用于将多个查询的结果集合并在一起。它不会去除重复的行,因此相比于 `UNION` 更加高效[^2]。
#### 基本语法
以下是 `UNION ALL` 的基本语法结构:
```sql
SELECT column_list FROM table_name_1
UNION ALL
SELECT column_list FROM table_name_2;
```
- **注意**: 所有参与联合的查询必须具有相同数量的列,并且对应列的数据类型应兼容[^3]。
#### 示例说明
假设存在两张表 `employees` 和 `contractors`,它们都包含相同的字段 `id`, `name`, 和 `salary`。下面是一个简单的例子展示如何使用 `UNION ALL` 将两者的记录全部取出:
```sql
SELECT id, name, salary FROM employees
UNION ALL
SELECT id, name, salary FROM contractors;
```
此查询会返回来自 `employees` 表和 `contractors` 表的所有记录,包括可能存在的重复项[^4]。
#### 处理别名的情况
当在子查询中定义了字段别名时,在最终结果集中可以利用这些别名来排序或其他操作。例如:
```sql
(SELECT id AS employee_id, name, salary FROM employees)
UNION ALL
(SELECT id AS contractor_id, name, salary FROM contractors)
ORDER BY employee_id; -- 或者 contractor_id
```
这里需要注意的是,尽管两个子查询分别指定了不同的别名 (`employee_id` 和 `contractor_id`) ,但在整个上下文中只允许引用其中一个作为统一名称进行后续处理。
#### 结合 LIMIT 使用
如果希望限制某个单独部分或者整体结果的数量,可以通过嵌套的方式应用 `LIMIT` 关键字。比如仅获取前五位员工加上所有承包商的信息如下所示:
```sql
(
SELECT id, name, salary FROM employees LIMIT 5
)
UNION ALL
(
SELECT id, name, salary FROM contractors
);
```
上述代码片段展示了如何通过括号分组并设置独立条件的方法实现更灵活控制输出规模的需求。
---
阅读全文
相关推荐
















