文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» Oracle 10g / 9i » 请教批量更新表里的记录的方法       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [讨论] 请教批量更新表里的记录的方法  ( 查看:429  回复:2 )   
 
lxislt
新新人类  点击可查看详细



帖子 8
精华 0
无忧币 10
积分 12
阅读权限 20
来自 (保密)
注册日期 2007-11-8
最后登录 2008-6-19 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-2-24 19:30   标题:请教批量更新表里的记录的方法
上一帖 |
各位大虾,小弟接触oracle甚浅,请教一个关于批量更新的问题:
假设有两个表emp和dept,两表里的记录都挺多.
如emp表:
empid      name     salary     hiredate
95001     张三       1000     2007-12-1
....

dept表:
deptid     name     sex     hiredate
95001     张三      男       2006-5-1
....

现要将emp表里的hiredate字段的数据更新为dept表里hiredate字段的数据,我试过一些update方法(不是单条记录更新),在where条件的时候总出错,不知道到底该怎么写,请各位大虾帮帮忙!



边测边学DB2,把握数据库应用最前沿(豪华大礼:罗技炫酷键鼠、50份卓越礼卡!)
2008-2-24 19:301楼
[ 顶部 ]
 
national
新新人类  点击可查看详细



十二生肖之猪   巨蟹座   行业勋章   技术勋章   诚信兄弟  
帖子 63
精华 0
无忧币 256
积分 73
阅读权限 20
注册日期 2008-2-21
最后登录 2008-11-13 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-2-24 22:42 
首先我想你dept表中的deptid应该是empid吧,怎么deptid和emp表中的empid会相同,当然,这种可能性也应该有,但是这样两张表用什么进行关联呢?显然用name字段是不合适的,我只能假设dept中的deptid为empid来写这条SQL。

1,两张表为1对1的关系
UPDATE emp e
      SET e.hiredate = (SELECT d.hiredate
                                  FROM dept d
                                WHERE d.empid = e.empid)

2,两张表为1对多的关系(不知道dept表是否真是那样存数据,一个emp在多个dept工作的可能性也有,但是hiredate的值的选择性就有多个)
MERGE INTO emp e
  USING dept d
  ON (d.empid = e.empid)
WHEN MATCHED THEN
  UPDATE SET e.hiredate = d.hiredate



边测边学DB2,把握数据库应用最前沿(豪华大礼:罗技炫酷键鼠、50份卓越礼卡!)
2008-2-24 22:422楼
[ 顶部 ]
 
lxislt
新新人类  点击可查看详细



帖子 8
精华 0
无忧币 10
积分 12
阅读权限 20
来自 (保密)
注册日期 2007-11-8
最后登录 2008-6-19 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-2-25 09:53 


谢谢楼上的大虾,两种方法小弟都试过了,都好用,其实我遇到的情况是上面说的第二种情况,那个例子是我按照我的实际情况命名的比较通俗易懂的两个表名,不是员工表和部门表的对应关系.两表通过对应的id关联,当然员工表和部门表之间也可能存在那样的情况

[ 本帖最后由 lxislt 于 2008-2-25 09:55 编辑 ]



边测边学DB2,把握数据库应用最前沿(豪华大礼:罗技炫酷键鼠、50份卓越礼卡!)
2008-2-25 09:533楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号