如何在DB2中的单个更新语句中更新多个列

Sup*_*man 18 sql database db2 sql-update

我想用单个Update语句更新DB2中表的多个列.

任何提示或想法都会很明显.谢谢.

Gor*_*off 38

所有SQL版本中的更新语句如下所示:

update table
    set col1 = expr1,
        col2 = expr2,
        . . .
        coln = exprn
    where some condition
Run Code Online (Sandbox Code Playgroud)

因此,答案是您使用逗号分隔分配,不要重复该set语句.

  • @Superman...只是一个一般原则,当问题发生实质性变化时,它会影响那些已经尝试通过答案或评论来解决问题的人.最好删除问题并重新开始.(而且我不需要这个问题的要点.) (3认同)
  • DB2还支持行分配:`update table set(col1,col2,...)=(expr1,expr2,...)where ...` (2认同)

bet*_*nzi 6

如果值来自另一个表,您可能想要使用

 UPDATE table1 t1 
 SET (col1, col2) = (
      SELECT col3, col4 
      FROM  table2 t2 
      WHERE t1.col8=t2.col9
 )
Run Code Online (Sandbox Code Playgroud)

例:

UPDATE table1
SET (col1, col2, col3) =(
   (SELECT MIN (ship_charge), MAX (ship_charge) FROM orders), 
   '07/01/2007'
)
WHERE col4 = 1001;
Run Code Online (Sandbox Code Playgroud)