从Oracle中合并两张表(oracle 2张表合并)

从Oracle中合并两张表

在Oracle数据库中,当我们需要将两个表合并为一个新的表时,我们可以使用MERGE语句完成此操作。

MERGE语句与INSERT语句类似,但可同时插入和更新数据,从而实现表之间的合并。

下面让我们通过一个简单的例子来介绍如何在Oracle中合并两张表。

假设我们有两个表:表1包含员工编号和工资,表2包含员工编号和职位。

现在我们想要将这两个表合并为一个新的表,其中包含员工编号、工资和职位。

我们需要创建一个新的表来存储合并后的数据。可以使用以下SQL语句创建新表:

CREATE TABLE new_employee (employee_id number(6), salary number(10,2), position varchar2(50));

接下来,我们可以使用MERGE语句将表1和表2合并到新表中,具体语句如下:

MERGE INTO new_employee ne

USING (SELECT employee_id, salary FROM employee) e

ON (ne.employee_id = e.employee_id)

WHEN MATCHED THEN UPDATE SET ne.salary = e.salary

WHEN NOT MATCHED THEN INSERT (employee_id, salary) VALUES (e.employee_id, e.salary);

MERGE INTO new_employee ne

USING (SELECT employee_id, position FROM position) p

ON (ne.employee_id = p.employee_id)

WHEN MATCHED THEN UPDATE SET ne.position = p.position

WHEN NOT MATCHED THEN INSERT (employee_id, position) VALUES (p.employee_id, p.position);

以上SQL语句实现了将表1和表2的数据合并到新表中的过程。我们使用SELECT语句将表1和表2的数据分别存储在e和p中。然后,我们将e和p合并到新表中。

在MERGE语句中,我们使用USING子句指定了两个源表(e和p)和它们共同合并输出到新表(ne)中。

在ON子句中,我们指定了如何匹配行。在这个例子中,我们使用了员工ID作为匹配条件。

在WHEN MATCHED THEN UPDATE语句中,我们将表1和表2中的工资和职位更新到新表中。

在WHEN NOT MATCHED THEN INSERT语句中,我们在新表中插入表1和表2中的员工ID和其他数据,因为它们在新表中还不存在。

我们使用SELECT语句验证新表中的数据是否正确,如下所示:

SELECT * FROM new_employee;

按照以上步骤操作,你就可以成功将两个表合并成一个新表,从而方便地进行下一步数据处理。

总结

在Oracle数据库中,使用MERGE语句可以将两个表合并为一个新的表。在MERGE语句中,使用USING子句指定源表,并使用ON子句指定匹配条件。通过WHEN MATCHED THEN UPDATE和WHEN NOT MATCHED THEN INSERT语句,表1和表2中的数据可以合并到新表中。使用SELECT语句验证合并后的数据是否正确。


数据运维技术 » 从Oracle中合并两张表(oracle 2张表合并)