从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语句验证合并后的数据是否正确。