oracle中两表并集的实现(oracle 两表并集)
Oracle中两表并集的实现
在Oracle数据库中,有时需要将两个表的数据进行合并,得到一个包含两个表所有数据的新表。这个操作被称为并集(Union)。本文将介绍Oracle中如何实现两个表的并集。
语法
Oracle中两个表的并集可以通过以下语法实现:
SELECT column1, column2, … FROM table1
UNION
SELECT column1, column2, … FROM table2;
上述语法中,UNION关键字用来合并SELECT语句返回的结果集,它会自动去重。如果需要保留重复记录,则需要使用UNION ALL。
示例
假设我们有两个表,分别是employees和students,表结构如下:
Table employees:
| emp_id | emp_name | emp_age |
|——–|———–|———|
| 1 | John | 30 |
| 2 | Peter | 35 |
| 3 | Mary | 28 |
| 4 | Jane | 32 |
Table students:
| stu_id | stu_name | stu_age |
|——–|———–|———|
| 1 | Tom | 18 |
| 2 | Bob | 19 |
| 3 | Lily | 20 |
| 4 | Jack | 19 |
现在需要将两个表的数据合并到一个新表中,创建一个名为people的表,包含emp_id, emp_name, emp_age, stu_id, stu_name, stu_age,代码如下:
CREATE TABLE people (
emp_id NUMBER,
emp_name VARCHAR2(50),
emp_age NUMBER,
stu_id NUMBER,
stu_name VARCHAR2(50),
stu_age NUMBER
);
使用以下语句可以将employees表和students表的数据合并到people表中:
INSERT INTO people (emp_id, emp_name, emp_age)
SELECT emp_id, emp_name, emp_age FROM employees
UNION
SELECT stu_id, stu_name, stu_age FROM students;
注意,由于两个表字段名称不同,需要使用SELECT语句重命名,保证字段名一致。
现在我们可以查询people表,得到以下结果:
Table people:
| emp_id | emp_name | emp_age | stu_id | stu_name | stu_age |
|——–|———–|———|——–|———-|———|
| 1 | John | 30 | 1 | Tom | 18 |
| 2 | Peter | 35 | 2 | Bob | 19 |
| 3 | Mary | 28 | 3 | Lily | 20 |
| 4 | Jane | 32 | 4 | Jack | 19 |
总结
在Oracle中,可以通过UNION关键字将两个表的数据合并到一个新表中。使用UNION会自动去重,如果需要保留重复记录则需要使用UNION ALL。在合并之前需要保证两个表字段名称一致或使用SELECT语句重命名。最终得到的结果集将包含两个表的所有记录。