从多个相同的记录中仅更新DB2中的1条记录?

时间:2014-03-24 06:59:28

标签: sql db2 sql-update db2-luw

我正在尝试更新单个记录,这是另一条记录的精确副本。有没有办法在更新时限制或仅选择1条记录?

由于

4 个答案:

答案 0 :(得分:2)

您可以使用FETCH FIRST n ROWS子句。

UPDATE 
( SELECT colA  FROM tableName t WHERE <where condition> FETCH FIRST 1 ROW ONLY
) 
SET t.colA= 'newvalue';

答案 1 :(得分:0)

只是好奇为什么你有一个完整的记录副本?你没有某种ID字段吗?你能展示你尝试过的东西吗?

实际上,避免此问题的最佳方法必须是拥有ID字段。

答案 2 :(得分:0)

而不是拥有多个记录的副本,这些副本会破坏RDBMS的目的。最好创建一个引用表来处理排序顺序。

答案 3 :(得分:0)

我有一个包含重复行(可能更多)的表,只是碰巧我需要这样的东西。 当我收到错误时,我的答案出现了问题:

  
    

&#34; t.myVALUE&#34;在使用它的上下文中无效.SQLCODE = -206,SQLSTATE = 42703,DRIVER = 3.64.106&#34;

  

但经过一些调整后,我得到了一个小小的选择。

UPDATE 
( SELECT t.myVALUE  FROM mytable t 
 WHERE  ( t.mykey = 'duplicatedkeyvalue' ) 
 FETCH FIRST 1 ROW ONLY
) AS z
SET z.myVALUE = 'newvalue';

似乎需要第二个别名&#39; z&#39;对于子选择结果