[GBase 8s 教程]GBase 8s UNION 操作符

GBase 8s UNION 操作符合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

语法
UNION 基础语法如下:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

这里的条件语句可以根据您的需要设置任何表达式。

实例
创建 COMPANY 表 ,数据内容如下:

DROP TABLE IF EXISTS COMPANY;
CREATE TABLE COMPANY(
  ID         SERIAL         PRIMARY KEY,
  NAME       VARCHAR(40)    NOT NULL,
  AGE        INT            NOT NULL,
  ADDRESS    CHAR(50),
  SALARY     DECIMAL(10,2),
  JOIN_DATE  DATE           DEFAULT TODAY
);
INSERT INTO COMPANY VALUES (0, '李雷', 37, '北京', 20000.00,'2005-05-13');
INSERT INTO COMPANY VALUES (0, '韩梅梅', 35, '天津', 16000.00, '2007-12-18');
INSERT INTO COMPANY VALUES (0, '林涛', 36, '上海', 25000.00, '2006-01-04');
INSERT INTO COMPANY VALUES (0, '魏华', 36, '西安', 15000.00, '2007-08-30');
INSERT INTO COMPANY VALUES (0, '露茜', 34, '伦敦', 22000.00, '2008-08-08');
INSERT INTO COMPANY VALUES (0, '莉莉', 34, '伦敦', 22000.00, '2008-08-08');
INSERT INTO COMPANY VALUES (0, '吉姆', 35, '华盛顿', 16000.00, '2010-12-13');
INSERT INTO COMPANY VALUES (0, '汤姆', 36, '渥太华', 21000.00, '2010-04-30');

此时,COMPANY的表记录为:

idnameageaddresssalaryjoin_date
1李雷37北京20000.002005-05-13
2韩梅梅35天津16000.002007-12-18
3林涛36上海25000.002006-01-04
4魏华36西安15000.002007-08-30
5露茜34伦敦22000.002008-08-08
6莉莉34伦敦22000.002008-08-08
7吉姆35华盛顿16000.002010-12-13
8汤姆36渥太华21000.002010-04-30

现在,使用 UNION 子句将两个SELECT连接起来,如下所示:

SELECT ID,NAME,ADDRESS FROM COMPANY WHERE ID < 4

UNION

SELECT ID,NAME,ADDRESS FROM COMPANY WHERE ID > 2 AND ID < 5;

得到的结果如下:

idnameaddress
1李雷北京
2韩梅梅天津
3林涛上海
4魏华西安

UNION ALL 子句

UNION ALL 操作符可以连接两个有重复行的 SELECT 语句,默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

语法
UINON ALL 子句基础语法如下:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

这里的条件语句可以根据您的需要设置任何表达式。

实例
现在,让我们把上面提到的语句结合 UNION ALL 子句连接起来:

SELECT ID,NAME,ADDRESS FROM COMPANY WHERE ID < 4

UNION ALL

SELECT ID,NAME,ADDRESS FROM COMPANY WHERE ID > 2 AND ID < 5;

得到结果如下(ID=3结果重复):

idnameaddress
1李雷北京
2韩梅梅天津
3林涛上海
3林涛上海
4魏华西安
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值