SAP Hana 中的 Union & Union All
SAP HANA 操作符
- 一元和二元运算符
- 算术运算符
- 字符串运算符
- 比较运算符
- 逻辑运算符
- 集合运算符
一元和二元运算符
运算符 | 操作 | 描述 |
---|---|---|
一元 | 一元运算符应用于一个操作数 | 一元加运算符(+) 一元负号运算符(-) 逻辑非(NOT) |
二进制 | 二元运算符应用于两个操作数 | 乘法运算符(*, /) 加法运算符(+, -) 比较运算符(=,!=,<,>,<=,>=) 逻辑运算符(AND, OR) |
算术运算符
- 加法(+)
- 减法(-)
- 乘法(*)
- 除法(/)
字符串运算符
字符串运算符是连接运算符,它将字符串、表达式或常量等两个项目合并为一个。
两个竖线“||”用作连接运算符。
比较运算符
比较运算符用于比较两个操作数。以下是比较运算符列表-
- 等于(=)
- 大于(>)
- 小于(<)
- 大于等于(>=)
- 小于等于(<=)
- 不等于(!=, <>)
逻辑运算符
逻辑运算符用于搜索条件。
例如:WHERE condition1 AND / OR / NOT condition2
以下是逻辑运算符列表-
- AND – (例如:WHERE condition1 AND condition2)
如果 Condition1 和 Condition2 都为真,则组合条件为真,否则为假。 - OR – (例如:WHERE condition1 OR condition2)
如果 Condition1 或 Condition2 为真,则组合条件为真,如果两个条件都为假,则为假。 - NOT – (例如:WHERE NOT condition)
如果 Condition 为假,则 NOT condition 为真。
集合运算符
- UNION – 合并两个或多个 SELECT 语句或查询,但不包含重复项。
- UNION ALL – 合并两个或多个 SELECT 语句或查询,包含所有重复行。
- INTERSECT – 合并两个或多个 SELECT 语句或查询,并返回所有公共行。
- EXCEPT – 获取第一个查询的输出,并删除第二个查询选择的行。
例如:我有两个表(table1,table2),其中包含一些共同值。
我们在 SQL 中对这两个表使用集合运算符(Union、Union ALL、Intersect、except),如下所示 –
创建 Table1 - SQL 脚本
CREATE COLUMN TABLE DHK_SCHEMA.TABLE1 ( ELEMENT CHAR(1), PRIMARY KEY (ELEMENT) ); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('P'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('Q'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('R'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('S'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('T');
创建 Table2 - SQL 脚本
CREATE COLUMN TABLE DHK_SCHEMA.TABLE2 ( ELEMENT CHAR(1), PRIMARY KEY (ELEMENT) ); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('S'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('T'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('U'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('V'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('W');
注意:“DHK_SCHEMA”是一个模式名称,用户可以根据需要更改 SQL 中的模式名称。
集合运算符的示例如下
运算符 | SQL 查询 | 输出 | 用途 |
---|---|---|---|
UNION | SELECT *
FROM ( SELECT ELEMENT FROM DHK_SCHEMA.TABLE1 UNION SELECT ELEMENT FROM DHK_SCHEMA.TABLE2 ) |
将两个或多个查询的结果合并,无重复项。 | |
UNION ALL | SELECT *
FROM ( SELECT ELEMENT FROM DHK_SCHEMA.TABLE1 UNION ALL SELECT ELEMENT FROM DHK_SCHEMA.TABLE2 ) ORDER BY ELEMENT; |
将两个或多个查询的结果合并,包含所有重复项。 | |
INTERSECT | SELECT *
FROM ( SELECT ELEMENT FROM DHK_SCHEMA.TABLE1 INTERSECT SELECT ELEMENT FROM DHK_SCHEMA.TABLE2 ) ORDER BY ELEMENT; |
将两个或多个查询的结果合并,并返回所有公共行。 | |
EXCEPT | SELECT *
FROM ( SELECT ELEMENT FROM DHK_SCHEMA.TABLE1 EXCEPT SELECT ELEMENT FROM DHK_SCHEMA.TABLE2 ) ORDER BY ELEMENT; |
获取第一个查询的输出,并删除第二个查询选择的行。 |