0

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

谢谢

4

4 回答 4

3

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

UPDATE 
( SELECT colA  FROM tableName t WHERE <where condition> FETCH FIRST 1 ROW ONLY
) 
SET t.colA= 'newvalue';
于 2014-03-24T07:10:26.667 回答
0

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

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

于 2014-03-24T07:18:28.293 回答
0

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

于 2014-03-24T18:17:47.783 回答
0

我有一个包含重复行(可能更多)的表,恰好我需要这样的东西。当我收到错误时,我对您的回答有疑问:

“t.myVALUE”在使用它的上下文中无效.. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.64.106”

但经过一些调整后,我找到了一个轻微的替代方案。

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

似乎只需要为子选择结果添加第二个别名“z”

于 2017-11-28T15:28:40.497 回答