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的表记录为:
id | name | age | address | salary | join_date |
---|---|---|---|---|---|
1 | 李雷 | 37 | 北京 | 20000.00 | 2005-05-13 |
2 | 韩梅梅 | 35 | 天津 | 16000.00 | 2007-12-18 |
3 | 林涛 | 36 | 上海 | 25000.00 | 2006-01-04 |
4 | 魏华 | 36 | 西安 | 15000.00 | 2007-08-30 |
5 | 露茜 | 34 | 伦敦 | 22000.00 | 2008-08-08 |
6 | 莉莉 | 34 | 伦敦 | 22000.00 | 2008-08-08 |
7 | 吉姆 | 35 | 华盛顿 | 16000.00 | 2010-12-13 |
8 | 汤姆 | 36 | 渥太华 | 21000.00 | 2010-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;
得到的结果如下:
id | name | address |
---|---|---|
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结果重复):
id | name | address |
---|---|---|
1 | 李雷 | 北京 |
2 | 韩梅梅 | 天津 |
3 | 林涛 | 上海 |
3 | 林涛 | 上海 |
4 | 魏华 | 西安 |