oracle 多表更新update,返回多行
发布网友
发布时间:2022-04-25 18:08
我来回答
共4个回答
热心网友
时间:2022-04-28 11:22
这种情况,就是多表更新,方法有几个,最简单就是 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
热心网友
时间:2022-04-28 12:40
(select tg_name from table2 b where a.id=b.id) 返回了多个值,可以在tg_name前面加上distinct,希望可以帮到你!
热心网友
时间:2022-04-28 14:14
如果没有设置主键的情况下确实是可以返回多行的。 我没有看明白你是什么意思,是只更新一行,还是什么?
如果想只更新一行的话, 可以在查询条件上面加 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);
热心网友
时间:2022-04-28 16:06
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是去重复的 (只在这个场景适合,如果去掉重复还是多行,那就不行了)