更新表中的每一行

时间:2014-02-28 16:07:07

标签: database oracle

我有两个表都有一个名为column_value的列,它包含一个数字值。现在我想要的是为每一行分别对两个表中的column_value的值求和,然后使用我获得的每一行的总和更新第一个表中的相同列(column_value)。 例如,我有表A和表B,它们都有一个列名AMOUNT

表A:

id     AMOUNT
1      20
2      30 

表B:

id     AMOUNT
1      10
2      25 

首先,我想获得以下结果

id AMOUNT  AMOUNT TOTALAMOUNT
1   20      10      30
2   30      25      55

现在我想针对每个id更新A表的每一行TOTALAMOUNT

因此在更新之后,表A应该看起来像

id AMOUNT  
1   30     
2   55 

2 个答案:

答案 0 :(得分:0)

选择:

SELECT A.ID,
       NVL(A.AMOUNT,0) A_AMOUNT ,
       NVL(B.AMOUNT,0) B_AMOUNT ,
       NVL(A.AMOUNT,0) + NVL(B.AMOUNT,0) AS TOTAL_AMOUNT
FROM TABLEA A, TABLEB B
WHERE A.ID = B.ID

<强>更新

UPDATE TABLEA A
SET A.AMOUNT = (SELECT NVL(A.AMOUNT,0) + NVL(B.AMOUNT,0)
                   FROM TABLEB B
                WHERE  A.ID = B.ID)

答案 1 :(得分:0)

你应该使用左连接。例如:

Table_a
id   val
1    10
2    20

Table_b
id   val
1    20
2    30

update Table_a a left join Table_b b on a.id = b.id set a.val = (a.val+b.val);

此操作后:

Table_a
id   val
1    30
2    50