2011-06-22 114 views
0

只是想知道是否有任何办法,我限制,这将UPDATE语句影响的行 量....我想使用像一个LIMIT声明的,但有没有这样的东西无孔不入,任何提示?有没有办法限制受UPDATE语句影响的行数?

谢谢

+1

既然你不控制因在更新的WHERE子句中的匹配数据的顺序,这并不真正使一个很大的意义。你只是想避免对数百万行进行更新? – unpythonic

+0

@马克曼嗨,马克,这正是这个问题,我有一个UPDATE语句,对一个相当大的表IM测试,只是希望限制的时候它会只是这样我就可以先对其进行测试,量... – seb

回答

1

看来,这将工作...

UPDATE表名 SET的ColumnName =值 WHERE ID IN(SELECT TOP 100 ID FROM表名WHERE条件)

制作TOP 100无论你的“限制”是什么。然后,适当地更新WHERE子句。

1

TOP 100想法可以工作,但根据您的数据,它可能会扭曲测试正确性或性能。写作也很难。我认为增加一个基于RANDOM的条款会更好一些。

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

这个工作,如果你的数据库的随机给出零和一之间的值,并且可以修改为不同的随机函数和密度。

0

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

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

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

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

把你的脚本语言,PL/SQL,或者是适当的存储过程。

相关问题