我有两个表隶属关系和客户,因为我有这样的数据
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
如果有人知道的话,请你回答......
答案 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;