请教SQL语句(在ORACLE中两个表之间的操作)

stushirley 2001-09-02 10:00:21
有两个表A,B
A是B的子集(A的数据在B中都能照到),现在要根据A的一个字段(车牌号码)去B中找到同样这条记录,并将B中该记录的“备注”字段写回A表中的备注字段。
应如何写比较高效?因为B表的数据量非常大!
拜托各位高手了!
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
boby_v 2001-09-03
  • 打赏
  • 举报
回复
推荐用EXISTS 子句:
update a set a.note =
(select b.note from b where b.id=a.id)
where exists
(select 1 from b where b.id = a.id)
liulee 2001-09-02
  • 打赏
  • 举报
回复
update a set a.note = (select b.memo from b where b.id = a.id)
时间长短取决于是否建立索引。以及note的大小。

如果可以用这个语法来update,则select语法也完全可以提取,何苦将一个数据保存在两个地方?
而且,上面的sql语法会导致b中没有的记录对a发生null操作。

完善的语法:
update a set a.note = (select b.note from b where b.id = a.id) and a.id in (select id from b group by id)



magiclee 2001-09-02
  • 打赏
  • 举报
回复
你自己试吧,我这里已经没有sql/plus了
stushirley 2001-09-02
  • 打赏
  • 举报
回复
那执行这个命令(在SQLPLUS)大概要多长时间呢?
magiclee 2001-09-02
  • 打赏
  • 举报
回复
update a set a.memo =(select b.memo from a,b where a.carno = b.carno);
magiclee 2001-09-02
  • 打赏
  • 举报
回复
update a set a.memo =(select b.备注 form a,b where a.carno = b.carno);

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧