【问题标题】:updating multiple rows of 2 columns with different values (db2 sql)用不同的值更新多行 2 列(db2 sql)
【发布时间】:2017-06-14 03:58:05
【问题描述】:

我有一个表,我需要在其中更改多行中几列的值。

要更改值的表如下:

我尝试包含更新值但没有成功的代码是:

UPDATE <table_name>
SET (IDENTIFIER_1, IDENTIFIER_2) 
VALUES (1635, 1755),
       (2024, 2199),
       (1868, 1692),
       (3577, 4825)
WHERE ID 
        IN ('1', 
            '23', 
            '54', 
            '21');

说实话,我不确定 db2 SQL 是否支持这一点。错误是:

  • [错误代码:-104,SQL 状态:42601] DB2 SQL 错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=update *

我还应该建议我是 db2 新手。

【问题讨论】:

  • 我最终将查询拆分为单独的 UPDATE SET 语句,用于每个要更改的值。这绝对不是推荐的解决方案,但它只对我有用的 4 条记录。修改后的代码为:UPDATE &lt;table_name&gt; SET (IDENTIFIER_1, IDENTIFIER_2) = (1635, 1755) WHERE ID = 1... 对其他 3 条记录重复同样的操作。
  • 您的“更新值”一直是“原始值”+ 1 - 这是一个规则吗?此类信息将有助于解决您的问题。
  • 不,我只是碰巧在我的测试中将所有值都增加了 1。更改的值可能不是增量 1。感谢您检查 Michael。

标签: db2


【解决方案1】:

您可以随时使用合并

MERGE INTO TABLE1                                               
USING  (                                                        
VALUES (1,1635, 1755),                                          
               (23,2024, 2199),                                 
               (54,1868, 1692) ) dummytable(ID_T, INF1,INF2)    
on table1.id_table  = dummytable.id_t                           
when matched                                                    
   then UPDATE set  TABLE1.IDENTIFIER_1 = dummytable.INF1       
     , TABLE1.IDENTIFIER_2 = dummytable.INF2                    
 else ignore  

【讨论】:

  • 感谢您的回复!如前所述,我是 db2 sql 新手,所以这些信息对我很有帮助。
  • @Randy 任何时候,如果你有你想要的,请接受并关闭问题:)
  • 完成,抱歉。显然我也是遵循 Stackoverflow 协议的新手。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2011-04-22
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多