oracle可以将表b查询的几个字段插入到表a的指定位置吗

时间:2022-08-22 10:54:41
比如我有个表a 
有字段  aa bb cc dd 
还有个表b 
有字段  ee ff gg

我找过相关语句是

insert into a (aa,bb,cc) select ee,ff,gg from b  where ....

但是这个where 条件只能限制从表b查询到的内容.,

有没有什么方法可以使表b查询到的ee ff gg 插入到 表a  dd字段为某值的时候呢?

求赐教!!
是不是一条语句写不出来??

5 个解决方案

#1


楼主说的是要更新到 dd = 100 的这条记录中吗?

#2


引用 1 楼 wmxcn2000 的回复:
楼主说的是要更新到 dd = 100 的这条记录中吗?


没错,就是这个意思

#3


两张表,有关联条件吗 ?

#4


-- 没有关联条件,可以这样写, 并且要保证  from b 查出来的记录,只有一条,超过 一条,就会报错;
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where ....)
where dd = 100 

-- 有关联条件
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where a.id=b.id)
where exists(select ee,ff,gg from b where a.id=b.id) 

#5


引用 4 楼 wmxcn2000 的回复:
-- 没有关联条件,可以这样写, 并且要保证  from b 查出来的记录,只有一条,超过 一条,就会报错;
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where ....)
where dd = 100 

-- 有关联条件
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where a.id=b.id)
where exists(select ee,ff,gg from b where a.id=b.id) 


太感谢了!
就是这么个意思,谢谢!!!

#1


楼主说的是要更新到 dd = 100 的这条记录中吗?

#2


引用 1 楼 wmxcn2000 的回复:
楼主说的是要更新到 dd = 100 的这条记录中吗?


没错,就是这个意思

#3


两张表,有关联条件吗 ?

#4


-- 没有关联条件,可以这样写, 并且要保证  from b 查出来的记录,只有一条,超过 一条,就会报错;
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where ....)
where dd = 100 

-- 有关联条件
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where a.id=b.id)
where exists(select ee,ff,gg from b where a.id=b.id) 

#5


引用 4 楼 wmxcn2000 的回复:
-- 没有关联条件,可以这样写, 并且要保证  from b 查出来的记录,只有一条,超过 一条,就会报错;
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where ....)
where dd = 100 

-- 有关联条件
update a 
set (aa,bb,cc) = (select ee,ff,gg from b where a.id=b.id)
where exists(select ee,ff,gg from b where a.id=b.id) 


太感谢了!
就是这么个意思,谢谢!!!