oracle怎么用一个表的多个字段数据更新另一个表相应的字段中

如题所述

第1个回答  2016-09-18
需要更新的表设为表1,数据表为表2,不知道你是要把表2的数据全部更新到表1中还是只更新表1中的部分字段。
可以用merge语句。
merge into 表1 a
using 表2 b
on (表1和表2的关系,例表1id =表2id)
where matched then update
set a.要修改的字段1 = b.要修改的字段1,a.要修改的字段2 = b.要修改的字段2,等等
--这里是将表表一的数据和表2做对比,更新条件是两表的id相同,当满足条件时,执行修改语句,将表1的数据字段改写为表2的
where not matched then insert
values(表2字段1,表2字段2,等等);
--这里是如果不满足条件,执行增加语句,将表2的数据插入到表1中
这里要注意,这两个表中字段名可以不同,但两表的数据类型要相同。
你可以先用别的表试下
第2个回答  2016-09-18
updatet table1
set (name,sex,age)=(select name,sex,age from table2 t2 where t2. id=table1.id)
where exists(select 1 from table2 t3 where table3.id= table1.id)
第3个回答  2017-11-02
假设表a中有多个字段(province ,city)需要从b表获取(两张表的mobile一样),总结了几种写法。
一、updatea set a.province=(select province from b where b.mobile=a.mobile);
updatea set a.city=(select cityfrom b where b.mobile=a.mobile);
这种写法效率太低,尤其是号码有上万条的时候,所以抛弃。
二、update a set a.province=b.province,a.city=b.city from a inner join b on a.mobile=b.mobile.
或者update a set a.province=b.province,a.city=b.city from a,b where a.mobile=b.mobile.
三、update a inner join b on a.mobile=b.mobile set a.province=b.province,a.city=b.city
注意:第二种和第三种写法在oracle行不通的,老是报错,折腾了好长时间,最后还是用下面的语句解决了问题
四、update a set(a.province,a.city)=(select province,city from b where b.mobile=a.mobile)
其实第四种方法是第一种方法的合并。
项目中写的真实例子:
注:用a.city=null不行的本回答被提问者采纳

oracle怎么用一个表的多个字段数据更新另一个表相应的字段中
可以用merge语句。merge into 表1 a using 表2 b on (表1和表2的关系,例表1id =表2id)where matched then update set a.要修改的字段1 = b.要修改的字段1,a.要修改的字段2 = b.要修改的字段2,等等 --这里是将表表一的数据和表2做对比,更新条件是两表的id相同,当满足条件时,...

oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段
update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id) where a.name<>b.name or a.address<>b.address

oracle怎么用一个表的多个字段数据更新另一个表相应的字段中
使用触发器

oracle 中用一个表的字段update另一个表的字段值怎么做
oracle 中用一个表的字段update另一个表的字段值怎么做 举例(一对一,tablea所有关联数据全部修改):update tablea set column_name1=(select name2 from tableb where tableb.name3=tablea.name1)只修改一个 update tablea set column_name1=(select name2 from tableb where tableb.name3='a...

怎样将Oracle一张表的多个字段更新到另一张表中去
将Oracle一张表的多个字段更新到另一张表中去总结了几种写法。一、updatea set a.province=(select province from b where b.mobile=a.mobile);updatea set a.city=(select cityfrom b where b.mobile=a.mobile);这种写法效率太低,尤其是号码有上万条的时候,所以抛弃。二、update a set a....

Oracle 将一个表中几个字段更新到另一个表中
第 1 行出现错误:ORA-01427: 单行子查询返回多个行 如果test_table2 表中只有一条数据,那么是没有问题的。我觉得你这两个表一定是要有关联关系的,不然这个update语句没什么意义。比如test_table1 表中有一个id字段,一对一关联着test_table2 表中的id字段,那么可以这样写:UPDATE TEST_TABLE1 ...

oracle 怎么用sql语句把一个表中相应字段的数据复制到另一表中的相应...
你意思是要建立一个中间表维持两表之间的多对多的复杂该系是吧?你试试这个语句:insert into C(a1,b1,a2,b2,) select ... from ...写上你所要关联的数据。一般的需求不会是笛卡尔集是吧。也就是说不可能每个数据都对应完所有数据。

在Oracle中怎样用一张表去Update另一张表
1、如果T_USER表中的一个USER_ID在T_NAME_MAP 表中存在两条以上的记录,则该语句会报错。因为Oracle是无法辨别你要“更新”哪一条的。当然,从纯技术的角度来看,这种情况也是可以处理的,你可以在B.NEW_NAME 上加一个函数,如MAX(B.NEW_NAME ).2、WHERE EXISTS 语句绝对不可以省略,有了这个...

oracle sql更新字段为另一张表的对应字段
update table_1 t1 set t1.name=(select t2.name from table_2 where t1.id=t2.id)where exists (select 1 from table_2 where t1.id=t2.id) and t1.idcard ='1111';之前子查询中的 t1.idcard ='1111' 是多余的。exists子句中的 t1.idcard ='1111'应该拿到外边来。如果这样还是...

在oracle中如何将一个表中所有数据加到另一个表中
1、导出所有:exp 用户名\/密码@数据库名称 file=导出文件存放路径及文件名 full=y全部导出eg:exp admin\/123456@p2p file=d:\\p2p.dmp full=y。2、使用命令行导出指定的表,不导出全部,使用命令如下: exp system\/manager@TEST file=d:\\daochu.dmp tables=(table1,table2) ,只导出table1和...

相似回答