Db2 联接三个表并将值更新到特定表
表a:Db2 联接三个表并将值更新到特定表,db2,Db2,表a: ID RES_ID NAME -------------------- 1 3 (null) 2 1 (null) 3 3 (null) RES_ID AREA_NAME ------------------- 3 India 1 Japan 3 India
ID RES_ID NAME
--------------------
1 3 (null)
2 1 (null)
3 3 (null)
RES_ID AREA_NAME
-------------------
3 India
1 Japan
3 India
ID RES_ID NAME
--------------------
1 3 Delhi
2 1 Tokyo
3 3 Delhi
表B:
ID RES_ID NAME
--------------------
1 3 (null)
2 1 (null)
3 3 (null)
RES_ID AREA_NAME
-------------------
3 India
1 Japan
3 India
ID RES_ID NAME
--------------------
1 3 Delhi
2 1 Tokyo
3 3 Delhi
表C:
AREA_NAME CITY_NAME
-----------------------
India Delhi
Japan Tokyo
England London
我想加入上述三个表,并使用DB2将TableC中的城市名称更新为TableA中的名称
请帮我整理一下
我已经尝试了下面的代码,但它不工作
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;
它显示错误消息。我希望输出如下所示
更新的表格a:
ID RES_ID NAME
--------------------
1 3 (null)
2 1 (null)
3 3 (null)
RES_ID AREA_NAME
-------------------
3 India
1 Japan
3 India
ID RES_ID NAME
--------------------
1 3 Delhi
2 1 Tokyo
3 3 Delhi
提前谢谢 您可以尝试以下方法:
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
合并运算符用于在已删除记录存在时更新记录,否则插入该记录。但是您已经有了记录,只需要更新一个字段。因此,您需要一个更新查询您可以尝试以下操作:
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
合并运算符用于在已删除记录存在时更新记录,否则插入该记录。但是您已经有了记录,只需要更新一个字段。因此,您需要一个更新查询I字段中有更多重复值。我想知道是否应该使用DISTINCT?在tableC中有多条记录具有相同的区域名称?如果是这样,表_a.name将具有这些值中的任何一个。你无法预测哪一个。。。但是你不需要区分如果它起作用,接受答案,这样其他有同样问题的人可以使用它。我在字段中有更多重复的值。我想知道是否应该使用DISTINCT?在tableC中有多条记录具有相同的区域名称?如果是这样,表_a.name将具有这些值中的任何一个。你无法预测哪一个。。。但是你不需要区分,如果它有效,接受答案,这样其他有同样问题的人也可以使用它