Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 使用MERGE合并两个表_Oracle_Join_Merge - Fatal编程技术网

Oracle 使用MERGE合并两个表

Oracle 使用MERGE合并两个表,oracle,join,merge,Oracle,Join,Merge,我正试图垂直地组合两张桌子 ID Salary A 50 B 100 表A ID Salary A 50 B 100 表B ID Salary A 50

我正试图垂直地组合两张桌子

ID   Salary                        
A        50                              
B       100
表A

ID   Salary                        
A        50                              
B       100
表B

ID   Salary                        
A        50                              
B       100
ID   Salary
C        50
D       200
我正在找一张看起来像

ID   Salary                        
A        50                              
B       100
ID   Salary
A        50                     
B       100
C        50
D       200
我用的是:

ID   Salary                        
A        50                              
B       100
merge into table_a a using (
  select id, salary from table B
) b
on (a.id = b.id);
这不起作用。

使用Union或Union all

ID   Salary                        
A        50                              
B       100
从表A中选择Id、薪资

ID   Salary                        
A        50                              
B       100
联合

ID   Salary                        
A        50                              
B       100
从表B中选择Id、薪资使用联合或联合所有

ID   Salary                        
A        50                              
B       100
从表A中选择Id、薪资

ID   Salary                        
A        50                              
B       100
联合

ID   Salary                        
A        50                              
B       100

从表B中选择Id,Salary

您的
合并
语法不正确。见下文。阅读有关合并的更多信息

ID   Salary                        
A        50                              
B       100

您的
Merge
语法不正确。见下文。阅读有关合并的更多信息

ID   Salary                        
A        50                              
B       100

我在这里实现了一些步骤,您可以按照每个步骤进行操作

ID   Salary                        
A        50                              
B       100
步骤1:我创建了两个表“table_a”和“table_b”

ID   Salary                        
A        50                              
B       100
create table table_a(ID varchar2(10),salary number(10));

create table table_b(ID varchar2(10),salary number(10));
步骤2:用数据填充它们:

ID   Salary                        
A        50                              
B       100
insert into table_a(id,salary) values ('A',50);
insert into table_a(id,salary) values ('B',100);

insert into table_b(id,salary) values ('C',50);
insert into table_b(id,salary) values ('D',200);
第三步:在这里使用merge语句,注意必须使用语句“when matched then”

ID   Salary                        
A        50                              
B       100
merge into table_a a
using table_b b
on (a.id = b.id)
when matched then
  update set a.salary = b.salary
when not matched then
  insert (id, salary) values (b.id, b.salary);

我在这里实现了一些步骤,您可以按照每个步骤进行操作

ID   Salary                        
A        50                              
B       100
步骤1:我创建了两个表“table_a”和“table_b”

ID   Salary                        
A        50                              
B       100
create table table_a(ID varchar2(10),salary number(10));

create table table_b(ID varchar2(10),salary number(10));
步骤2:用数据填充它们:

ID   Salary                        
A        50                              
B       100
insert into table_a(id,salary) values ('A',50);
insert into table_a(id,salary) values ('B',100);

insert into table_b(id,salary) values ('C',50);
insert into table_b(id,salary) values ('D',200);
第三步:在这里使用merge语句,注意必须使用语句“when matched then”

ID   Salary                        
A        50                              
B       100
merge into table_a a
using table_b b
on (a.id = b.id)
when matched then
  update set a.salary = b.salary
when not matched then
  insert (id, salary) values (b.id, b.salary);

第一件事:这不是pl/sql。第二件事:正如XING所指出的,merge语句缺少更多选项。第三件事:您只想查询它,或者确实要合并数据?如果您想查询,请使用union运算符,正如SMA所写。
来自表B
看起来是错误的。这应该是
来自表B
?(加上其他人提到的缺少的
插入
/
更新
部分。)第一件事:这不是pl/sql。第二件事:正如XING所指出的,merge语句缺少更多选项。第三件事:您只想查询它,或者确实要合并数据?如果您想查询,请使用union运算符,正如SMA所写。
来自表B
看起来是错误的。这应该是
来自表B
?(加上其他人提到的缺少的
插入
/
更新
部分。)