Oracle A表更新B表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle A表更新B表相关的知识,希望对你有一定的参考价值。

我要用A表 a1 a2 a3 a4 B5
1 1 2 2 2
2 3 4 4 4

B表 B1 B2 B3 B4 B5
1 1 2 2 2
2 3 4 4 4
用A表的数据更新B表数据 但是要求B5的数据不能有变动 (实际表中A表B5字段名和B表B5字段名一样的,只是值不同)如何更新? 请写出SQL语句并上中文解释 谢谢

参考技术A 既然你说表A和表B中的B5字段是一致的,其实你的意思就是表A和表B是通过B5这个字段来关联的,那么语句可以这样写
update B set B1=A.a1,B2=A.a2,B3=A.a3,B4=A.a4 from A where A.B5=B.B5
试试吧,我测试过没问题本回答被提问者采纳
参考技术B 首先要确定A表和B表可作为关联操作的数据字段,如A表中a1||a2与B表中b1||b2做相符匹配才可

如此,可通过存储过程来实现
create or replace procedure doupdate
as
begin
for a in(select * from a)
begin
update b set b.b1=a.a1,b.b2=a.a2,b.b3=a.a3,b.b4=a.a4,b.b5=a.a5
where a.a1||a.a2=b.b1||b.b2;
end
commit;
end
因为环境原因,以上过程代码还需执行或调试
参考技术C 实现思路就是通过两个表的关联字段,之后将结果更新到另外一个表中:
sql:update b set a3=(select a3 from a where a.a1=b.b1 and a.a2=b.b2)
备注:使用上边语句,不存在b表中的a表数据不会被更新。
参考技术D 用A表的数据更新B表数据 但是要求B5的数据不能有变动.
哪一个是基准的字段呢?

换句话说, 对于 A 表的
a1 a2 a3 a4 B5
1 1 2 2 2

是通过哪一个字段,去匹配 B 表的数据呢?

两表关联更新的例子, 不过是 SQL Server 版本的,仅供参考。
http://hi.baidu.com/wangzhiqing999/blog/item/0d6aaaf780a98b42352accd4.html

这个是 mysql 下面,通过VIEW来实现的例子。
http://hi.baidu.com/wangzhiqing999/blog/item/767be28f634ddb00c8fc7aba.html

高分求助:oracle 大表更新,大约200万,insert和update太慢,如何解决?

最近工作需要,几乎天天要更新一张表有A表200万条数据,另一个临时表B有5000到500000条数据,需要从B表中一条一条去A表中核实,要是存在的话,更新A中的一些数据,没有的话就插入;A表没有分区,建有索引,A表正在使用;现在的情况是更新5000条就需要3个多小时,太慢;要是50W的话还不知道怎么的了,向各位高手求教,敬请不吝赐教,谢谢!解决好追加分数!!!!!!!!!!

简单的看看搂主的描述 "需要从B表中一条一条去A表中核实"
我估计是用 游标来处理的。
如果用游标一行一行 FETCH , 性能可能要打点折扣。
这种情况下,可以尝试使用 BULK COLLECT 来批量加载。
下面是 Oracle 游标处理II - 使用BULK COLLECT 的例子。
http://hi.baidu.com/wangzhiqing999/blog/item/2ea041cc0d4606037e3e6f20.html

又看了一下逻辑, 要是存在的话,更新,没有的话就插入。
如果没有其他的复杂的逻辑的话,那么用 MERGE 语句,可以直接处理掉。
下面是 MERGE 的例子
http://hi.baidu.com/wangzhiqing999/blog/item/2879207af3e388370cd7da86.html
参考技术A

写个存储过程,使用pl/sql MARGE INTO 方法

写法是这样的

  

详细访问百度问库:http://wenku.baidu.com/view/1308e0563c1ec5da50e27006.html

存储过程,你肯定会写,不会写就找我吧。我每天白天都在

参考技术B 数据库 jsp页面
varchar32 String
int int
long long

不需要设置编码,只要保证页面和数据库都是utf-8就可以了,看看你的表中的字段类型,再对照着看看页面设置的类型,是否一致,问题就解决了!
参考技术C 1. 先分步核实各动作消耗的时间, 确定缓慢原因
2. 如果是在A表中检索消耗的时间多, 则需要优化索引.
3. 如果是在插入的时间长, 需要优化系统配置, 系统优化关系方面太多, 无法在短篇内说明,
需要你去了解Oracle性能优化与操作系统优化的相关专著.
参考技术D 建一个游标或者触发器可以解决查询慢的问题,然后根据索引获取要修改或要插入的数据,这样就快多了

以上是关于Oracle A表更新B表的主要内容,如果未能解决你的问题,请参考以下文章

关于oracle 多表关联更新的问题

高分求助:oracle 大表更新,大约200万,insert和update太慢,如何解决?

oracle通过两张表更新一张表

关于oracle中 根据一个表的主键数据同步更新另一个关联表的字段。

Oracle A表更新B表

oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段