2016-01-18 61 views
0

我有一個表具有以下字段: ID,價值觀,VARIAB更新與和

我試着去和的字段值,但它需要通過ID進行分組。 而Subselect不接受多行。 (當我用它只有一個ID,工作正常)。

BEGIN 
UPDATE TBL2 
SET SOMA = 
     (SELECT SUM(x.VALUES) 
     FROM TBL3 x INNER JOIN TBL2 y 
    ON y.ID = x.ID 
    WHERE y.ID = x.ID AND X.VARIAB = 1 
GROUP BY x.ID 
    ); 
END; 

即時通訊使用ORACLE數據庫,如果有人評論這個病是非常gratefull。 對不起,我的英文瑕疵。

+0

你想一次更新多條記錄?如果是這樣,請使用'MERGE'語句。 – RubahMalam

+0

我嘗試過,但可能做錯了。我做了這樣的事情:BEGIN MERGE INTO TBL2 x 使用TBL3 y ON(x.ID = y.ID) 當匹配然後 UPDATE SET SOMA =(SELECT SUM(VALUES); – glup

回答

0

的問題是,你的更新語句不相關 - 即。你的子查詢沒有引用正在更新的表。

你可以將其更改爲:

update tbl2 t2 
set soma = (select sum(t3.values) 
      from tbl3 t3 
      where t2.id = t3.id 
      and t3.variab = 1); 
2

要一次更新多條記錄和/或做一個更新插入,使用MERGE聲明是這樣的:

MERGE INTO TBL2 T2 USING (
    SELECT x.id,SUM(x.VALUES) total 
    FROM TBL3 x 
    WHERE x.VARIAB = 1 
    GROUP BY x.ID 
) T3 ON (T2.ID = T3.ID) 
WHEN MATCHED THEN UPDATE 
SET T2.SOMA = T3.TOTAL