SAP Hana 中的 Union & Union All

SAP HANA 操作符可用于计算、值比较或赋值。

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),其中包含一些共同值。

Set Operators in SAT HANA

我们在 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

)
ORDER BY ELEMENT;

Set Operators

将两个或多个查询的结果合并,无重复项。
UNION ALL SELECT *

FROM

(

SELECT ELEMENT

FROM DHK_SCHEMA.TABLE1

UNION ALL

SELECT ELEMENT

FROM DHK_SCHEMA.TABLE2

)

ORDER BY ELEMENT;

Set Operators

将两个或多个查询的结果合并,包含所有重复项。
INTERSECT SELECT *

FROM

(

SELECT ELEMENT

FROM DHK_SCHEMA.TABLE1

INTERSECT

SELECT ELEMENT

FROM DHK_SCHEMA.TABLE2

)

ORDER BY ELEMENT;

Set Operators

将两个或多个查询的结果合并,并返回所有公共行。
EXCEPT SELECT *

FROM

(

SELECT ELEMENT

FROM DHK_SCHEMA.TABLE1

EXCEPT

SELECT ELEMENT

FROM DHK_SCHEMA.TABLE2

)

ORDER BY ELEMENT;

Set Operators

获取第一个查询的输出,并删除第二个查询选择的行。