Oracle update语句 多表where 条件如何处理

q6881132 2014-01-01 02:52:35
例如表 A(a,b,c) 表 B(a,d,e)
我想要做的处理,

update A set A.a='1'
from A
left join B on A.a=B.a
where B.d='2'
and A.b='3'

但是在Oracle中实现不了..
不用子查询,用left join 如何解决呢??
抱各路大神大腿..菜鸟求解释
...全文
1684 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
北京-小北 2014-01-01
  • 打赏
  • 举报
回复
没有主键,就用rowid吧
北京-小北 2014-01-01
  • 打赏
  • 举报
回复
引用 2 楼 qq315737546 的回复:
update A set a = '1' where a.id in (select id from A left join B on A.a=B.a where B.d=2 and A.b=3);
刚看了你的表结构,没有id列, 如果你的A表没有主键,貌似上面的方法就不行了.
北京-小北 2014-01-01
  • 打赏
  • 举报
回复
update A set a = '1' where a.id in (select id from A left join B on A.a=B.a where B.d=2 and A.b=3);
CT_LXL 2014-01-01
  • 打赏
  • 举报
回复
引用 楼主 q6881132 的回复:
例如表 A(a,b,c) 表 B(a,d,e) 我想要做的处理,

update A set A.a='1'
from A
left join B on A.a=B.a
where B.d='2'
and A.b='3'
但是在Oracle中实现不了.. 不用子查询,用left join 如何解决呢?? 抱各路大神大腿..菜鸟求解释
很少这么用。再说,你的LEFT JOIN没有任何意义,因为B.d='2'这个条件必定会把那些只在A中存在的数据过滤掉。如果不想用子查询,ORACLE比较常见的你可以试试MERGE INTO

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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