pen*_*ake 5 sql t-sql sql-server dynamic-sql
假设我有数千行要更新.
我计划迭代地进行更新; 通过每次迭代仅更新1000行.
我想迭代,直到没有行要更新.
如何在没有要更新的行之前运行下面的T-SQL脚本?
-- TODO: Create a loop so that it exists when there is no ROW left to be updated;
-- how can I do it?
UPDATE tableToUpdate
SET IsVegetable = 1
WHERE Id IN
(SELECT TOP 1000 Id
FROM tableToUpdate
WHERE Date = '2011-07-23 14:00')
-- Loop ends
Run Code Online (Sandbox Code Playgroud)
试试这个循环
while 1 = 1
BEGIN
UPDATE top (1000) tableToUpdate
SET IsVegetable = 1
WHERE
Date = '2011-07-23 14:00'
AND IsNull(IsVegetable, 0) = 0
if @@ROWCOUNT < 1000 BREAK
END
Run Code Online (Sandbox Code Playgroud)
为什么ISNULL - 因为它不清楚 - 如果字段IsVegetable是否可以为空,如果不是 - 则不需要ISNULL
当IsVegetable <> 1没有任何行时 - 循环将退出,因为@@ ROWCOUNT将是= 0或<1000(对于最后一次迭代)
归档时间: |
|
查看次数: |
18196 次 |
最近记录: |