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语句重命名。最终得到的结果集将包含两个表的所有记录。


数据运维技术 » oracle中两表并集的实现(oracle 两表并集)