2011-06-22 153 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,或者是適當的存儲過程。

相關問題