2

在执行 SQL 更新时,

update request set state_id = 2 where id in (
           select id from request where state_id = 0 and entity_id in 
           (<list of numbers>)
)

这一次只更新 7 行。

内部选择查询,

 select id from request where state_id = 0 and entity_id in (<list of numbers>)

返回 2000+ 条记录。

我正在使用 Squirrel SQL 客户端运行查询并检查限制行是否设置为 3000。

更有趣的是,如果我在连续执行更新查询之间等待更多时间,则会更新更多行。我的意思是,当我等待 10 秒并执行更新时,更新了 45 行。但是当快速运行时,只有 7 行得到更新。

有人可以帮我指出我可能做错了什么吗?

执行内部选择 - 选择:

执行更新 - 更新:

4

1 回答 1

0

我建议编写适当的更新,因为我认为没有理由引入涉及子查询的更复杂的查询。还要确保您以前没有更改@@ROWCOUNT

SET @@ROWCOUNT 0;

UPDATE dbo.request
  SET state_id = 2
  WHERE state_id = 0 
  AND entity_id IN (<list of numbers>);

还要检查您是否没有人为地限制 Management Studio 中的行数。在工具 > 选项中:

在此处输入图像描述

(好吧,如果您正确标记了这将是相关的。检查您针对 Sybase 使用的任何客户端工具,看看它是否有一些类似的选项。)

于 2013-11-05T18:48:38.233 回答