oracle 当中的update语句问题,涉及两张表

walkman154 2008-02-26 10:54:03
我现在要更新update操作,涉及到A,B
两个表
大概意思是这样的,
只更新一个表A,但是是要从关联的A,B的结果集当中来获取相关条件,以及相关值。
加入A表有1,2,3,4四个字段
B表有1,2,3,4四个字段

下面这个语句有问题。但是大概是这个意思
这是通过关联查处的结果集
select a.1,a.2,b.3,b.4 from A a,B b where a.1=b.1,a.3=b.2
然后还有一步就是通过上面查出来的结果集。更新A表 假设 查出来的结果集为C
update A a set a.1=C.a.1 ,a.2=C.a.2 where a.3=C.b.3 and a.4=C.b.4

请问用一个语句怎么来实现。
...全文
1065 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanjun_xf 2008-02-28
  • 打赏
  • 举报
回复
singel-row subquery returns more than one row

这个问题可能是你的数据库驱动支持返回多条!!你看看网上有很多!
laodizhuq 2008-02-28
  • 打赏
  • 举报
回复
更新时,返回记录数大于1条,如果返回的结构都一样,可以通过rownum=1来实现只返回1条记录,
如果返回多条不同的记录,那就是你这个需求有问题了,需要重新整理需求或者重新设计表结构了。
wf0207650 2008-02-27
  • 打赏
  • 举报
回复
dddddddddddddddddddddddddddd
jdsnhan 2008-02-27
  • 打赏
  • 举报
回复
update A
set (a.1, a.2) = (select b.1, b.2 from b where A.*** = B.***)
where .....

确定(select b.1, b.2 from b where A.*** = B.***) 里面的条件控制为能返回唯一的一条记录

shengbinbin 2008-02-27
  • 打赏
  • 举报
回复
不用那么麻烦,好像可以用nvl()函数做,可以一步到位,另外MERGE语句也可以试一下。
yaiger 2008-02-26
  • 打赏
  • 举报
回复
update A
set (a.1, a.2) = (select b.1, b.2 from b where A.*** = B.***)
where .....

语法格式如上,自行调整把
walkman154 2008-02-26
  • 打赏
  • 举报
回复
to bai_jiong
提示相应错误 command not properly ended


to haiye and sulins
错误信息 提示 singel-row subquery returns more than one row
因为中间查出来的是一个记录集。
haiye 2008-02-26
  • 打赏
  • 举报
回复
你要说明白,把B表的哪个字段更新到A表中的哪个字段,以及更新条件是什么?
通用的做法:
update A
set (A表中你要更新的字段) = (select B表中你要更新的字段 from b where 需要的条件)
where 需要更新A表的条件
bai_jiong 2008-02-26
  • 打赏
  • 举报
回复
试一下这个SQL语句,其中表结构 A(col1,col2,col3,col4) B(col1,col2,col3,col4)
update A
set col1=btable.col1,col2=btable.col2
from B btable
where col3=btable.col3 and col4=btable.col4;
sulins 2008-02-26
  • 打赏
  • 举报
回复

UPDATE A
SET (A.3, A.4) = (SELECT B.3, B.4
FROM B
WHERE A.1=B.1 AND A.2=B.2)
WHERE EXISTS (SELECT 1
FROM B
WHERE A.1=B.1 AND A.2=B.2)
walkman154 2008-02-26
  • 打赏
  • 举报
回复
提示 singel-row subquery returns more than one row

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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