oracle 多表更新update,返回多行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 多表更新update,返回多行相关的知识,希望对你有一定的参考价值。
update table1 a set a.cb_name = (select tg_name from table2 b where a.id=b.id) where a.id in (select b.id from table2 b where a.id=b.id);
这种情况,就是多表更新,方法有几个,最简单就是 Update Select 啦!
UPDATE (SELECT /*+ BYPASS_UJVC */A.ID, A.CB_NAME, B.TG_NAME
FROM TABLE1 A, TABLE2 B
WHERE A.ID = B.ID)
SET CB_NAME = TG_NAME 参考技术A 如果没有设置主键的情况下确实是可以返回多行的。 我没有看明白你是什么意思,是只更新一行,还是什么?
如果想只更新一行的话, 可以在查询条件上面加 rownum <2 ,只返回一条。
update table1 a set a.cb_name = (select tg_name from table2 b where a.id=b.id and rownum <2 ) where a.id in (select b.id from table2 b where a.id=b.id and rownum <2);追问
后面重新附了一个表格 你看看就知道了
追答没看到有表格啊?
追问能说下你QQ么
本回答被提问者采纳 参考技术B select tg_name from table2 b where a.id=b.id这个子查询 返回了两条结果。你让a.cb_name 等于两个结果当然行不通了!
实在不行你把select tg_name from table2 b where a.id=b.id改成select distinct tg_name from table2 b where a.id=b.id
distinct是去重复的 (只在这个场景适合,如果去掉重复还是多行,那就不行了) 参考技术C (select tg_name from table2 b where a.id=b.id) 返回了多个值,可以在tg_name前面加上distinct,希望可以帮到你!
[oracle]两表关联的update操作问题
现在有两个表 a 和 b,要用b表的x字段来更新a表的x字段,条件是a表的y字段=3,并且a表z字段=b表的z字段,两表数据很多,而且(a表z字段=b表的z字段)的个数不是唯一的.
高手请来帮一下忙啊,写出这段sql语句,谢谢了
给你个取最大的:
update a set a.x =
(select max(b.x) from b where a.z = b.z )
where y=3
;
两表数据多,只能通过在两表z字段建索引来加快速度。 参考技术A update a, b set a.x = b.x where a.y=3 and a.z = b.z
以上是关于oracle 多表更新update,返回多行的主要内容,如果未能解决你的问题,请参考以下文章