2014-09-26 67 views
0

更新2表中包含2个用于匹配AS400 SQL中的键的字段。请帮助我处理此SQl查询。 我试过下面的查询,它正在工作,但想要微调。更新2表中有2个字段的表中的字段用于匹配AS400 SQL中的键。请帮助我使用此SQl查询

update  color0 as a 
    set A.COL_COL1PCT = (select B.COL_COL1PCT 
          from srpua/color0919 as b 
          where A.COL_COLOR= B.COL_COLOR) 
    , A.COL_CHGDTE = 20140919 
    , a.COL_CHGUSER ='SRPUA'            
where A.COL_COLOR in (SELECT B.COL_COLOR from srpua/color0919 as b) 
+0

目前尚不清楚您期望的“微调”。你展示的是标准的。也不清楚你想从另一个表中更新'2 Fields'。您只显示一个从另一个文件更新的字段。 – user2338816 2014-09-28 11:25:17

+0

通常,“微调”SQL实际上是为优化器创建合适的索引来处理的。 – 2014-09-29 13:52:00

回答

1

真的没有“微调”做......

你可能会使用一个行值表达式喜欢的替代语法;假设一个相对的,IBM v5r4(?)左右的DB2版本。

update  color0 as a 
    set (A.COL_COL1PCT,A.COL_CHGDTE, A.COL_CHGUSER) 
    = (select B.COL_COL1PCT, 20140919, 'SRPUA'  
      from srpua/color0919 as b 
     where A.COL_COLOR= B.COL_COLOR) 
where A.COL_COLOR in (SELECT B.COL_COLOR from srpua/color0919 as b) 
0

以下内容同时更新A.COL_COL1PCT和A.COL_COLOR字段。它在查尔斯的回答中做出了调整:

update color0 as a 
set (A.COL_COL1PCT, A.COL_COLOR, A.COL_CHGDTE, A.COL_CHGUSER) 
= (select B.COL_COL1PCT, B.COL_COLOR, 20140919, 'SRPUA'  
     from srpua/color0919 as b 
    where A.COL_COLOR= B.COL_COLOR) 
相关问题