[ORACLE]关联表更新数据
2017-10-12 19:25
302 查看
1.UPDATE 表1 A SET (列1,列2) =
(SELECT C2,C3 FROM 表2 B WHERE b.C1=A.FORM_CODE)
where exists (select 1 from 表B where b.c1=a.form_code)
注:若返回多条则会报错
2.利用视图更新
update (select a.列1,b.列1 FROM 表1 A,表2 B
WHERE A.列2=B.列2)
SET a.列1=b.列1
注:A(列2) b(
4000
列2)必需是unique index或primary key,否则报错。
若a.列1、b.列1的列名相同,则可以给其起别名,如下:
update (select a.列1,b.列1 别名 FROM 表1 A,表2 B
WHERE A.列2=B.列2)
SET a.列1=别名
3.游标
declare
cursor cur is SELECT C1,C2,C3 FROM 表2;
begin
for my_cur in cur
loop
UPDATE 表1 A SET 列1=my_cur.C2,列2=my_cur.C3
where A.FORM_CODE=my_cur.C1;
end loop;
end;
(SELECT C2,C3 FROM 表2 B WHERE b.C1=A.FORM_CODE)
where exists (select 1 from 表B where b.c1=a.form_code)
注:若返回多条则会报错
2.利用视图更新
update (select a.列1,b.列1 FROM 表1 A,表2 B
WHERE A.列2=B.列2)
SET a.列1=b.列1
注:A(列2) b(
4000
列2)必需是unique index或primary key,否则报错。
若a.列1、b.列1的列名相同,则可以给其起别名,如下:
update (select a.列1,b.列1 别名 FROM 表1 A,表2 B
WHERE A.列2=B.列2)
SET a.列1=别名
3.游标
declare
cursor cur is SELECT C1,C2,C3 FROM 表2;
begin
for my_cur in cur
loop
UPDATE 表1 A SET 列1=my_cur.C2,列2=my_cur.C3
where A.FORM_CODE=my_cur.C1;
end loop;
end;
相关文章推荐
- Oracle两张表关联批量更新其中一张表的数据
- oracle多表关联更新(update)/删除(delete)数据表的的写法
- oracle 更新关联表数据
- MVC5+EF6--8 更新关联数据
- oracle外键关联而无法删除数据
- aa75 Oracle 触发器 插入,更新,删除,数据同步,两表同步
- Oracle数据操纵语言(DML)-更新数据
- ios Coredata 关联 UITableView 数据自动更新
- 通过SQL Server的Linked Servers连接到Oracle以直接更新相关数据表
- 转 update关联更新在sqlserver和oracle中的实现
- 在ASP.NET 2.0中操作数据::研究插入、更新和删除的关联事件
- 修改oracle某张表的ID类型varchar2为number,并保留原有数据(因为可能其他表与该表ID关联)
- hibernate (多对多) 执行update更新操作时,关联表数据会被删除
- Oracle 两个关联表之间更新
- Oracle:外键关联导致数据无法删除
- Oracle数据库案例整理-导入导出Oracle数据失败-数据字典没有更新
- Oracle 中用一个表的数据更新另一个表的数据
- Oracle 触发器更新本表数据
- mysql 两个关联表如何更新其中一个表的数据
- 用UPDATE SET FROM 语句来关联表更新数据