当前位置: 代码迷 >> Oracle技术 >> ORACLE 数据替换有关问题,呀,
  详细解决方案

ORACLE 数据替换有关问题,呀,

热度:176   发布时间:2016-04-24 08:07:55.0
ORACLE 数据替换问题,急呀,在线等!!!

假设 这个是
select jgzzguid,zzguid from A // 查出的数据


这个是
select  zzguid  from B //查出的数据


现在要做的就是 A和B这两个表 zzguid 这个字段值改成和jgzzguid改成同一个值,且必需对应起来,原来jgzzguid的值不能变
------解决方案--------------------
引用:

假设 这个是
select jgzzguid,zzguid from A // 查出的数据


这个是
select  zzguid  from B //查出的数据


现在要做的就是 A和B这两个表 zzguid 这个字段值改成和jgzzguid改成同一个值,且必需对应起来,原来jgzzguid的值不能变

update B set B.zzguid=(select A.JGZZGUID FROM A WHERE A.ZZGUID=B.ZZGUID);
UPDATE A SET A.ZZGUID=JGZZGUID;
------解决方案--------------------
先更新B,再更新A就可以啊。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:


假设 这个是
select jgzzguid,zzguid from A // 查出的数据


这个是
select  zzguid  from B //查出的数据


现在要做的就是 A和B这两个表 zzguid 这个字段值改成和jgzzguid改成同一个值,且必需对应起来,原来jgzzguid的值不能变

update B set B.zzguid=(select A.JGZZGUID FROM A WHERE A.ZZGUID=B.ZZGUID);
UPDATE A SET A.ZZGUID=JGZZGUID;


这样很明显不行,update B set B.zzguid=(select A.JGZZGUID FROM A WHERE A.ZZGUID=B.ZZGUID);
这个 (select A.JGZZGUID FROM A WHERE A.ZZGUID=B.ZZGUID);先不说这条语句是否正确,假设正确,返回不是一个值,而是很多个值,这样数据回报单行字查询返回多个行

如果是存在返回多行记录,那你更新的时候是基于什么规则?也就是说如果同一个ZZGUID对应多个JGZZGUID ,你要更新成哪一个?最小的,最大的....
------解决方案--------------------
估计有可能是返回0行了,0行和多行错误号一样,增加个条件试下,没有对应数据的不需要更新
update B set B.zzguid=(select A.JGZZGUID FROM A WHERE A.ZZGUID=B.ZZGUID)
where exits (select 1 FROM A WHERE A.ZZGUID=B.ZZGUID)

------解决方案--------------------
单词拼错
update B set B.zzguid=(select A.JGZZGUID FROM A WHERE A.ZZGUID=B.ZZGUID)
where exists (select 1 FROM A WHERE A.ZZGUID=B.ZZGUID)
  相关解决方案