更新多个表中的行

时间:2016-08-01 12:45:40

标签: oracle

我有两个表隶属关系和客户,因为我有这样的数据

aff_id  From_cus_id
------  -----------
1       10
2       20
3       30
4       40
5       50 

cust_id   cust_aff_id 
-------   -------
10
20
30
40
50

我需要从关联表中更新cust_aff_id列的数据,这是下面的aff_id

cust_id   cust_aff_id 
-------   -------
10        1
20        2
30        3
40        4
50        5
如果有人知道的话,请你回答......

3 个答案:

答案 0 :(得分:2)

merge into customer t2 
  using affiliation t1  on (t1.From_cus_id =t2.cust_id )
  WHEN MATCHED THEN
  update set t2.cust_aff_id  = t1.aff_id
  ;

答案 1 :(得分:1)

Oracle没有UPDATE加入语法,但您可以使用子查询:

UPDATE customer
SET customer.cust_aff_id =
(SELECT aff_id FROM affiliation WHERE From_cus_id = customer.cust_id)

答案 2 :(得分:0)

以下是使用连接语法的更新。这非常合理,仅当from_cus_id是第一个表中的主键且cust_id是第二个表中的外键(引用第一个表)时才有效。在没有这些条件的情况下,这个要求无论如何都没有多大意义......但Oracle要求在表格中明确说明这些约束。这对甲骨文公司的IMO来说也是合理的。

update 
    ( select t1.aff_id, t2.cust_aff_id 
      from affiliation t1 join customer t2 on t2.cust_id = t1.from_cus_id)  j 
set j.cust_aff_id = j.aff_id;