0

只是想知道我是否有任何方法可以限制受 UPDATE 语句影响的行数......我正在考虑使用类似 LIMIT 语句的东西,但在 PERVASIVE 中没有这样的东西,有什么提示吗?

谢谢你

4

3 回答 3

1

看来这会奏效...

UPDATE TableName SET ColumnName = value WHERE ID IN (SELECT TOP 100 ID FROM TableName WHERE CONDITION)

无论您的“限制”是什么,都可以进入前 100 名。然后,只需适当地更新 WHERE 子句。

于 2011-06-22T22:00:43.143 回答
1

这个TOP 100想法可行,但根据您的数据,它可能会影响测试的正确性或性能。也可能很难写。我认为添加RANDOM基于 - 的子句效果更好。

UPDATE t SET c = blah 
  WHERE (/* whatever bunch of stuff */) 
  AND Random()<0.01 /* 1 percent */

如果您的数据库的 random 给出一个介于 0 和 1 之间的值,并且可以针对不同的随机函数和密度进行修改,则此方法有效。

于 2011-06-22T22:18:02.880 回答
0

如果您只是小心点,为什么不只计算要更新的行数呢?

select count(*) from MYTABLE WHERE ...some condition...;

如果计数足够低,这实际上是剪切并粘贴到更新中:

update MYTABLE set col1 = val1, ... WHERE ...some condition...;

适当地放入您的脚本语言、pl/sql 或存储过程。

于 2011-06-22T23:00:50.860 回答