Oracle SQL:使用相同 table 的子查询更新 oracle 中的多行

Oracle SQL : Update multirows in oracle using subquery of same table

我有一个table这样的

Group Item_No UL MODEL
10 1 40 10
10 1 35 12
10 1 30 13
10 2 NULL 10
10 2 NULL 12
10 2 NULL 13

我想更新 UL 的值,其中 ITEM_NO 是 2 从项目编号 =1 减去 5 的 UL,其中模型相同。

所以我的输出 table 应该是这样的

Group Item_No UL MODEL
10 1 40 10
10 1 35 12
10 1 30 13
10 2 35 10
10 2 30 12
10 2 25 13

我的查询如下所示:

Update table t1
   set t1.Ul = ( select t2.ul-5
                   from table t2
                  where t2.item_no =1)
 where t1.model in ( select model
                       from table t2
                      where t2.item_no = 1) , t1. Item_no =2

此查询 returns 错误为“单行子查询 returns 多行。” 我也尝试过使用 inner join 但无法做到。 谁能帮忙看看怎么做。

试试这个:

MERGE INTO table t1
USING table t2
ON (t1.model = t2.model AND t2.Item_No = 1)
WHEN MATCHED THEN
  UPDATE SET t1.UL = t2.UL - 5, t1.Item_No = 2

我想您正在寻找以下内容:

merge into t1 x
using (select * from t1  where ITEM_NO = 1) y
on (x.M0DEL = y.M0DEL and x.ITEM_NO=2)
WHEN matched THEN
  UPDATE SET x.UL=Y.UL -5;

https://livesql.oracle.com/apex/f?p=590:43:20294207843979::NO:::

update t1 tt1
set tt1.ul=(select tt2.ul from t1 tt2  where  tt1.model1= tt2.model1 and 
tt2.item_no=2)
where tt1.item_no=1;