【发布时间】:2014-10-02 15:35:54
【问题描述】:
我对带有 group 功能的 Oracle Update 语句有一些问题 我想从另一个表中更新一列的所有记录。 但它显示 SQL 错误:ORA-01427:单行子查询返回多于一行 这是我的例子。
create table branch_cp
(
area varchar2 (5) ,
branch_code varchar2 (5) primary key,
branch_name varchar2 (20));
------
create table branch_cp_2
(
area varchar2 (5) ,
branch_code varchar2 (5) primary key,
branch_name varchar2 (20));
----------------------------------
insert into branch_cp values ('01', '01', 'A');
insert into branch_cp values ('01', '02', 'B');
insert into branch_cp values ('03', '03', 'C');
----------
insert into branch_cp_2 values ('01', '04', 'D');
insert into branch_cp_2 values ('01', '05', 'E');
insert into branch_cp_2 values ('03', '06', 'F');
----------------------
select * from branch_cp;
------------------
update branch_cp
set branch_cp.branch_code = (select branch_cp_2.branch_code
from branch_cp_2
where branch_cp.area =branch_cp_2.area)
where exists (select 1 from branch_cp_2 where branch_cp_2.area = branch_cp.area) ;
如何在更新语句中使用组函数。请帮忙
【问题讨论】:
-
area 是一个主键列 brach_cp_2 ,您的插入应该会失败,因为您插入相同的值 01 两次。
-
抱歉输入错误。分支是主键
-
嗯,你有两条
branch_cp_2记录,其中area是01。那么,您将如何确定具有该区域的两个branch_cp行中的每一个的两个branch_code值中的哪一个?你说过你想分组,但你需要说明你想要什么 - 最小或最大代码?两条记录将获得相同的值,这将违反您的主键。 -
好的。我想更新
area01和branch01从branch_cp将通过area01和branch03从branch_cp_2更新。下一个area01和branch02从branch_cp将更新area01和branch04从branch_cp_2。有没有可能!! -
两个表中每个区域的记录数是否始终相同?
标签: sql oracle sql-update