我正在尝试更新单个记录,这是另一条记录的精确副本。有没有办法在更新时限制或仅选择1条记录?
由于
答案 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;对于子选择结果