我正在尝试更新一条记录,它是另一条记录的精确副本。有没有办法在更新时限制或只选择 1 条记录?
谢谢
您可以使用FETCH FIRST n ROWS
子句。
UPDATE
( SELECT colA FROM tableName t WHERE <where condition> FETCH FIRST 1 ROW ONLY
)
SET t.colA= 'newvalue';
只是好奇为什么你有准确的记录副本?您没有某种 ID 字段吗?你能展示你尝试过的东西吗?
确实,避免此问题的最佳方法必须是拥有一个 ID 字段。
而不是拥有多个记录的副本,这违背了 RDBMS 的目的。最好创建一个引用表来处理排序顺序。
我有一个包含重复行(可能更多)的表,恰好我需要这样的东西。当我收到错误时,我对您的回答有疑问:
“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”