Sql 有没有办法限制受UPDATE语句影响的行数?
我只是想知道是否有什么方法可以限制行数 这将受到更新语句的影响…我曾想过使用类似于限制语句的东西,但在普适中没有这样的东西,有什么提示吗Sql 有没有办法限制受UPDATE语句影响的行数?,sql,pervasive,Sql,Pervasive,我只是想知道是否有什么方法可以限制行数 这将受到更新语句的影响…我曾想过使用类似于限制语句的东西,但在普适中没有这样的东西,有什么提示吗 谢谢看来这会奏效 更新表名 设置ColumnName=value WHERE ID IN从TableName WHERE CONDITION中选择前100个ID 无论你的极限是多少,都要进入前100名。然后,只需适当地更新WHERE子句。前100个想法可以奏效,但根据您的数据,它可能会影响正确性或性能测试。它也可能很难写。我认为添加一个基于随机的子句会更好一些
谢谢看来这会奏效 更新表名 设置ColumnName=value WHERE ID IN从TableName WHERE CONDITION中选择前100个ID 无论你的极限是多少,都要进入前100名。然后,只需适当地更新WHERE子句。前100个想法可以奏效,但根据您的数据,它可能会影响正确性或性能测试。它也可能很难写。我认为添加一个基于随机的子句会更好一些
UPDATE t SET c = blah
WHERE (/* whatever bunch of stuff */)
AND Random()<0.01 /* 1 percent */
如果您的DB的random给出的值介于0和1之间,则此方法有效,并且可以针对不同的随机函数和密度进行修改。如果您只是小心一点,为什么不只计算要更新的行数呢
select count(*) from MYTABLE WHERE ...some condition...;
如果计数足够低,这实际上是剪切并粘贴到更新:
update MYTABLE set col1 = val1, ... WHERE ...some condition...;
根据需要将其放入脚本语言、pl/sql或存储过程中。由于您无法控制更新中WHERE子句找到的匹配数据的顺序,因此这没有多大意义。你只是想避免对数百万行运行更新吗?@Mark Mann嗨Mark,这正是问题所在,我有一个update语句,我正在对一个相当大的表进行测试,只是想限制它所需的时间,这样我就可以先测试它了。。。