mysql union和union all sum
时间: 2023-10-09 08:12:22 浏览: 31
`UNION` 和 `UNION ALL` 是 MySQL 中用于将两个或多个 SELECT 语句的结果合并在一起的操作符。它们的区别在于 `UNION` 会自动去重,而 `UNION ALL` 不会去重。
举个例子,假设有两个表 A 和 B,它们的结构如下:
```
Table A
+----+-------+
| id | value |
+----+-------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
+----+-------+
Table B
+----+-------+
| id | value |
+----+-------+
| 1 | 40 |
| 4 | 50 |
| 5 | 60 |
+----+-------+
```
如果我们想要将这两个表中的所有数据合并在一起,可以使用以下 SQL 语句:
```sql
SELECT * FROM A
UNION ALL
SELECT * FROM B;
```
这会得到以下结果:
```
+----+-------+
| id | value |
+----+-------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 1 | 40 |
| 4 | 50 |
| 5 | 60 |
+----+-------+
```
如果我们使用 `UNION` 操作符,那么重复的行会被自动去重,得到以下结果:
```sql
SELECT * FROM A
UNION
SELECT * FROM B;
```
```
+----+-------+
| id | value |
+----+-------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 50 |
| 5 | 60 |
+----+-------+
```
至于 `SUM`,它是用于对某列的数值进行求和的函数。例如,如果我们想要计算表 A 中 value 列的总和,可以使用以下 SQL 语句:
```sql
SELECT SUM(value) FROM A;
```
这会得到 10 + 20 + 30 = 60。如果我们想要计算表 A 和表 B 中 value 列的总和,可以使用以下 SQL 语句:
```sql
SELECT SUM(value) FROM (
SELECT value FROM A
UNION ALL
SELECT value FROM B
) AS combined_table;
```
这里我们使用了子查询将 A 和 B 的结果合并在了一起,然后对合并后的结果进行求和。