会员登录 用户名: 密码: 登录 新会员注册 [找回密码]
当前位置:编程论坛 >> 数据库技术专区 >> Oracle 论坛 >> oracle两张表批量更新 - Oracle 论坛
首页
  发表一个新主题  发表一个新投票  回复主题 您是本帖的第 1794 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
 * 贴子主题:oracle两张表批量更新 悬赏分50 [提问中] 报告本帖给版主  显示可打印的版本  把本贴打包邮递  把本贴加入论坛收藏夹  发送本页面给朋友  把本贴加入IE收藏夹 
 xahtzyy 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:155
  专家分:0
  提问帖:1/0
  回答帖:0
  总帖数:2
  经验值:54
  注 册:2008-3-14
给xahtzyy发送一个短消息 把xahtzyy加入好友 查看xahtzyy的个人资料 搜索xahtzyy在Oracle 论坛的所有贴子  引用回复这个贴子 回复这个贴子楼主

发贴心情 oracle两张表批量更新

两个表(实际表的数据量很大)
A:                                                          
id            type     no        code                   
68369  1 1                                   
68369  1 2                                  
68369  2 1                           
68369  2 2                           
68369  3 1                            
68369  3 2                            
68369  3 3                                  
B:
id            type     no        code
68369        1       1  H34.803 
68369        1       2  H25.901
68369        2       1  H34.803
68369        2       2  H25.901
68369        3       1  H34.803
68369        3       2  H25.901
68369        3       3  H52.301
                       
让A.code=b.code,条件是A、B表id号、type、no相等,在sql里面用下语句就可以实现
update A 
set code=B.code from B
where A.id=B.id and A.type=B.type and A.no=B.no
但是oracle里面不行呀,用下语句总是提示返回值为多行,请指教.
update A  
set code=(select B.code from  B, A
where A.id='68369' 
and A.id=B.id
and A.type=B.type
and A.no=B.no);
发帖:2008-3-14 11:52:00
  鲜花(0)  鸡蛋(0)
 索引越界 帅哥哟,离线,有人找我吗?
  
  
  头 衔:情剩
  等 级:初级剑客
  积 分:16662
  专家分:11199
  提问帖:0/0
  回答帖:839
  总帖数:1156
  经验值:1208
  注 册:2006-11-19
给索引越界发送一个短消息 把索引越界加入好友 查看索引越界的个人资料 搜索索引越界在Oracle 论坛的所有贴子 引用回复这个贴子 回复这个贴子2

发贴心情 

你那个字查询的确是会返回多行,这样试下呢?

update A  
set code=(select B.code from  B
where A.id='68369' 
and A.id=B.id
and A.type=B.type
and A.no=B.no);


和你最亲密的人因为亲密,所以会暴露出很多缺点给你。
和你很疏远的人因为疏远,所以可以有选择的展示优点。

所以,不要对身边最亲密的人要求太苛刻!
所以,更不能拿别人的优点来对比你身边最亲密的人。

发帖:2008-3-14 12:21:00
 xahtzyy 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:155
  专家分:0
  提问帖:1/0
  回答帖:0
  总帖数:2
  经验值:54
  注 册:2008-3-14
给xahtzyy发送一个短消息 把xahtzyy加入好友 查看xahtzyy的个人资料 搜索xahtzyy在Oracle 论坛的所有贴子  引用回复这个贴子 回复这个贴子3

发贴心情 

2楼
不行呀,你写的这个和我的没有什么分别呀
发帖:2008-3-14 14:13:00
 jelvis 帅哥哟,离线,有人找我吗?金牛座1985-5-8
  
  
  头 衔:背负十字者
  等 级:初出江湖
  积 分:10
  专家分:8
  提问帖:5/4
  回答帖:5
  总帖数:22
  经验值:85
  注 册:2008-3-25
给jelvis发送一个短消息 把jelvis加入好友 查看jelvis的个人资料 搜索jelvis在Oracle 论坛的所有贴子 引用回复这个贴子 回复这个贴子4

发贴心情 

那样写肯定是返回多条数据了,你可以写一个过程来实现:
1。加一个判断,a.code是否为空,不为空即循环
2。select中加一个rownum作为循环条件自增

let it be

发帖:2008-3-30 13:04:00
 张凌云 帅哥哟,离线,有人找我吗?
  
  
  头 衔:小小程序员
  等 级:论坛游民
  积 分:1562
  专家分:622
  提问帖:0/0
  回答帖:79
  总帖数:101
  经验值:179
  注 册:2007-5-14
给张凌云发送一个短消息 把张凌云加入好友 查看张凌云的个人资料 搜索张凌云在Oracle 论坛的所有贴子 引用回复这个贴子 回复这个贴子5

发贴心情 

update A  
set code=(select B.code from  B)
where A.id=B.id
and A.type=B.type
and A.no=B.no;

做好程序是我的职责所在,还请大家多多指教。

发帖:2008-4-25 9:31:00
 zhang123zz 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:218
  专家分:0
  提问帖:0/0
  回答帖:2
  总帖数:4
  经验值:54
  注 册:2008-5-22
给zhang123zz发送一个短消息 把zhang123zz加入好友 查看zhang123zz的个人资料 搜索zhang123zz在Oracle 论坛的所有贴子 引用回复这个贴子 回复这个贴子6

发贴心情 

哈哈,帮不了你,现在我都在学习呀.你去查看API呀,应该可以找到的.当然现在你应该已经解决了把,可以公布出来不,让我这个初学者也了解一下呀.
发帖:2008-5-22 11:02:00
 chris_wang 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:213
  专家分:0
  提问帖:0/0
  回答帖:2
  总帖数:2
  经验值:55
  注 册:2008-5-27
给chris_wang发送一个短消息 把chris_wang加入好友 查看chris_wang的个人资料 搜索chris_wang在Oracle 论坛的所有贴子  引用回复这个贴子 回复这个贴子7

发贴心情 

update A aa
set aa.CODE = (select bb.code
    from B bb
    where aa.id=bb.ID
    and aa.type=bb.TYPE
    and aa.num=bb.num)
where  exists (select 1
                  from B bb
                  where aa.id=bb.ID
                  and aa.type=bb.TYPE
                  and aa.num=bb.num)


[此贴子已经被作者于2008-5-27 17:50:30编辑过]
发帖:2008-5-27 17:47:00
 etosony 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:206
  专家分:0
  提问帖:0/0
  回答帖:1
  总帖数:1
  经验值:51
  注 册:2008-6-6
给etosony发送一个短消息 把etosony加入好友 查看etosony的个人资料 搜索etosony在Oracle 论坛的所有贴子 引用回复这个贴子 回复这个贴子8

发贴心情 

不错  建议在WHERE上多下功夫
发帖:2008-6-6 16:08:00

本主题贴数8,分页:[返回帖子列表] [上一页] [1] [下一页]

 *提问结帖:将分数分配给帮助了你的网友 - [论坛积分规则]

右边列出了所有回答过你提问的帐号,请将分数分配给回答正确的用户。

提示:
    您的积分在提问时已经扣除,所以结帖分配积分并不会减少您的现有积分。
    在得到帮助后请及时结帖,否则会受到斑竹的处罚[扣除积分]。

如果某个用户不分配则留空,仅填写要分配的用户即可。

总分数:50   已分配:0   可分配:50





 *快速回复:oracle两张表批量更新  [ 回帖是一种美德 :) ]
会员账号 用户名    还没注册?    密码    忘记密码?
内容
  • HTML标签: 不可用
  • UBB标签: 可用
  • 贴图标签: 可用
  • 多媒体标签:可用
  • 表情字符转换:可用
  • 上传图片:不可用
  • 最多15KB
  • 点击表情图即可在帖子中加入相应的表情
                                
    邮件回复 显示签名   [Ctrl+Enter直接提交贴子]

    管理选项锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告