集 Oracle 联合操作求交集求并集(oracle 交并)
Oracle 联合操作:求交集、求并集
在日常工作中,经常会涉及到多个数据集的合并,这时候就需要使用 Oracle 的联合操作,实现对数据集的并集与交集的查询。下面就介绍一下 Oracle 联合操作的用法。
1. 求并集
求并集即将两个数据集中的所有行合并成一个数据集,并且去除重复的记录。使用 UNION 关键字可实现两个或多个数据表的并集查询。 UNION 的语法格式如下:
SELECT column1, column2…
FROM table1
UNION
SELECT column1, column2…
FROM table2;
其中,column1, column2…为要查询的数据列,table1, table2为要查询的数据表。通过 UNION 操作符将两个数据集分别查询出来,并合并去重,最终得到一个并集数据集。
例如,查询 A 表和 B 表的所有记录,可以使用如下 SQL 语句:
SELECT id, name
FROM A
UNION
SELECT id, name
FROM B;
2. 求交集
求交集即将两个数据集中相同的行记录取出,形成一个新的数据集。使用 INTERSECT 关键字可实现两个数据表的交集查询。 INTERSECT 的语法格式如下:
SELECT column1, column2…
FROM table1
INTERSECT
SELECT column1, column2…
FROM table2;
其中,column1, column2…为要查询的数据列,table1, table2为要查询的数据表。通过 INTERSECT 操作符将两个数据集分别查询出来,并取出相同的记录,最终得到一个交集数据集。
例如,查询 A 表和 B 表的公共记录,可以使用如下 SQL 语句:
SELECT id, name
FROM A
INTERSECT
SELECT id, name
FROM B;
总结
通过使用 UNION 和 INTERSECT 关键字,我们可以方便地得到两个或多个数据集的并集和交集。需要注意的是,如果数据集中有重复的记录,需要使用 DISTINCT 关键字去重,才能得到正确的结果。
代码示例:
下面给出一个完整的示例,包括建立 A 和 B 两个表,插入数据以及执行联合操作的 SQL 语句。
— 创建 A 表
CREATE TABLE A (
id NUMBER(10),
name VARCHAR2(50)
);
— 插入数据
INSERT INTO A VALUES (1, ‘Tom’);
INSERT INTO A VALUES (2, ‘Mary’);
INSERT INTO A VALUES (3, ‘Lucy’);
INSERT INTO A VALUES (4, ‘Peter’);
— 创建 B 表
CREATE TABLE B (
id NUMBER(10),
name VARCHAR2(50)
);
— 插入数据
INSERT INTO B VALUES (2, ‘Mary’);
INSERT INTO B VALUES (4, ‘Peter’);
INSERT INTO B VALUES (6, ‘John’);
— 输出 A 和 B 表的并集
SELECT id, name
FROM A
UNION
SELECT id, name
FROM B;
— 输出 A 和 B 表的交集
SELECT id, name
FROM A
INTERSECT
SELECT id, name
FROM B;