数据库版本:KingbaseES V008R006C008B0014
文章目录如下
1. union的概念
2. union的语法
3. union的用法
3.1. 去重(union)
3.2. 不去重(union all)
3.3. 聚合运算
3.4. 异常案例
1. union的概念
UNION 是结构化查询语言(SQL)中的一个操作符,用于合并多个SELECT语句的结果集。它的特点如下:
- 合并结果集
- 自动去重
- 列对齐
UNION 与连接查询类似,比如:
- 合并结果集
- 多表查询
但它们也存在不同点,比如:
- UNION 自动去除重复的行
- 连接查询匹配数据后处理,并不会去重
2. union的语法
语法有2种方式:
- union:去重
- union all:不去重
基本语法如下:
SELECT 表1
union
SELECT 表2
union
SELECT 表3
...
union 就是直接将多条select连接起来后去重,如果将 union 换成 union all 则表示不去重。
注意:这里的去重是指将多个 SELECT 的查询结果集去重。
3. union的用法
3.1. 去重(union)
假定 t1、t2 表存在一行相同的数据
执行 UNION 后自动去重
SELECT * FROM t1
UNION
SELECT * FROM t2;
3.2. 不去重(union all)
还是使用 3.1 的例子:假定 t1、t2 表存在一行相同的数据
执行 UNION ALL 不去重
SELECT * FROM t1
UNION ALL
SELECT * FROM t2;
3.3. 聚合运算
union 可以使用 select 中的全部方法,这里举一个例子:查询某张表1月份和2月份的总金额(使用聚合、where条件)
SELECT '一月份总金额', sum(amount) FROM t1 WHERE MONTH(date) = 1
UNION
SELECT '二月份总金额', sum(amount) FROM t1 WHERE MONTH(date) = 2;
3.4. 异常案例
非相同类型列无法使用
如果两个select的投影列类型不相同是无法查询的,需要指定类型相同列,例如: