关于oracle 多表关联更新的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于oracle 多表关联更新的问题相关的知识,希望对你有一定的参考价值。
有三张表:A表/B表/C表,其中A表与B表是数据库中原有的,C表是新导入进oracle中的,
A表中有a000(唯一标识号),a002(姓名),a008(身份证号)
B表中有a000(唯一标识号),--现在想要更新的数据列为a079??
C表中有卡号(导入新表后取列名为kh),姓名(导入新表后取列名为name),身份证号(导入新表后取列名为zjhm)我现在是想把C表中的‘卡号’(kh)这一列更新到B表中的a079列,如何导入?
---------------提示----------
现在问题是B表中没有身份证号码和姓名,只能通过A表与B表关联后作为一张大的表,然后再关联C表中的姓名和证件号码来更新到B表中的a079列。
---------考虑的问题----
A表中可能有重复的身份证号码或者姓名
(1)如果A表中有重复的身份证号码,可以用去重的方法来踢掉,
(2)A表中重复的姓名怎么办? 请写出一个语句来查一下A表中重复的姓名有多少。
--------------------------------------------------本人是新手,请针对问题予以回答-----------------------------------
C表根据身份证号直接关联到A表,查询出所有的a000,然后直接根据这个去update B表中的数据 参考技术A 身份证唯一就行,姓名重复是无法避免的
select count(*) from (select name from a group by name having count(name)>=2)本回答被提问者采纳
oracle多表关联update
日常的开发中一般都是写的单表update语句,很少写多表关联的update。
不同于SQL Server,在Oracle中,update的多表连接更新和select的多表连接查询在使用的方法上存在较大差异。
语法比较难以说得清楚,直接上例子就妥了。
update diosos_01 d1 set d1.name = ( select d2.name from diosos_02 d2 where d1.code = d2.code ) where d1.code is not null;
特别之处在于,两个表之间的关联关系是在子查询中的WHERE子句中建立的。
"哪里会有人喜欢孤独,不过是不喜欢失望。"
以上是关于关于oracle 多表关联更新的问题的主要内容,如果未能解决你的问题,请参考以下文章