使用不同的值更新多行2列(db2 sql)

使用不同的值更新多行2列(db2 sql),db2,Db2,我有一个表,需要在其中更改多行中两列的值 包含要更改的值的表如下所示: 我尝试过的包含更新值的代码是: UPDATE <table_name> SET (IDENTIFIER_1, IDENTIFIER_2) VALUES (1635, 1755), (2024, 2199), (1868, 1692), (3577, 4825) WHERE ID IN ('1', '23',

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

包含要更改的值的表如下所示:

我尝试过的包含更新值的代码是:

UPDATE <table_name>
SET (IDENTIFIER_1, IDENTIFIER_2) 
VALUES (1635, 1755),
       (2024, 2199),
       (1868, 1692),
       (3577, 4825)
WHERE ID 
        IN ('1', 
            '23', 
            '54', 
            '21');
更新
集合(标识符_1、标识符_2)
价值观(16351755),
(2024, 2199),
(1868, 1692),
(3577, 4825)
何处ID
在('1'中,
'23', 
'54', 
'21');
老实说,我不确定DB2SQL是否支持这一点。错误是:

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

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

您可以随时使用Merge

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  

您始终可以使用“合并”

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  

最后,我将查询拆分为单独的更新集语句,用于每个要更改的值。这肯定不是一个推荐的解决方案,但只有4张唱片对我有效。修改后的代码是:
更新集(标识符1,标识符2)=(16351755),其中ID=1
。。。并对其他3条记录重复相同的操作。您的“更新值”始终是“原始值”+1-这是规则吗?这些信息将有助于解决您的问题。不,我只是碰巧在测试中将所有值增加了1。更改的值可能不是增量1。感谢您检查Michael。我最终将查询拆分为单独的更新集语句,用于每个要更改的值。这肯定不是一个推荐的解决方案,但只有4张唱片对我有效。修改后的代码是:
更新集(标识符1,标识符2)=(16351755),其中ID=1
。。。并对其他3条记录重复相同的操作。您的“更新值”始终是“原始值”+1-这是规则吗?这些信息将有助于解决您的问题。不,我只是碰巧在测试中将所有值增加了1。更改的值可能不是增量1。谢谢查看Michael。谢谢您的回复!如前所述,我是一名db2 sql新手,因此此信息对我很有帮助。@Randy任何时候,如果你得到了你想要的东西,请接受并结束这个问题:)完成,并表示歉意。显然,我也是Stackoverflow协议的新手。:-)谢谢你的回复!如前所述,我是一名db2 sql新手,因此此信息对我很有帮助。@Randy任何时候,如果你得到了你想要的东西,请接受并结束这个问题:)完成,并表示歉意。显然,我也是Stackoverflow协议的新手。:-)