加入三个表并将值更新到特定表

时间:2015-07-09 19:00:11

标签: db2

表A:

ID    RES_ID   NAME          
--------------------
1       3     (null)    
2       1     (null)    
3       3     (null) 

表B:

RES_ID    AREA_NAME          
-------------------
3           India        
1           Japan        
3           India        

TableC:

AREA_NAME    CITY_NAME          
-----------------------
India        Delhi        
Japan        Tokyo        
England      London

我想加入上述三个表,并使用 DB2 将TableC中的CITY_NAME更新为TableA中的NAME。

请帮我解决一下。

我已尝试过以下代码,但它无效。

MERGE INTO TableA A
USING TableB B, TableC C 
   ON A.RES_ID= B.RES_ID
   AND B.AREA_NAME = C.AREA_NAME
WHEN MATCHED
   THEN UPDATE SET A.NAME = C.CITY_NAME;

它显示错误消息。我想要输出如下,

更新了TableA:

ID    RES_ID   NAME          
--------------------
1       3     Delhi        
2       1     Tokyo    
3       3     Delhi          

提前致谢!

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

update A set name = c.name from tableA A 
    inner join tableB B  ON A.RES_ID= B.RES_ID
    inner join tableC C on B.AREA_NAME = C.AREA_NAME

MERGE运算符用于在存在disired记录时更新记录,否则插入记录。但是你已经有了记录,你只需要更新一个字段。因此,您需要更新查询