查询不会每次都返回所有行

时间:2012-02-15 17:56:21

标签: sql sql-server-2000

我们有两个简单的查询(内部存储过程,由网站使用):

    if @a = 1
begin
select a.col1, a.col2 , b.col1 from table1 a join table2 b
on a.id = b.id 
where a.col1 = 'yyyy'
end
else
begin
select a.col1, a.col2 , b.col1 from table1 a join table2 b
on a.id = b.id 
where a.col1 = 'zzzz'
end

第一次查询(@a = 1)永远不会出现问题。第二个应该返回48行(表不经常写)。每天一次或两次(数百次点击)第二次查询返回10或30行(调试我将@@ rowcount插入另一个表)。所以强迫它给我48行,我试过这样的事情:

else
again:
begin
select a.col1, a.col2 , b.col1 from table1 a join table2 b
on a.id = b.id 
where a.col1 = 'zzzz'
if @@rowcount <> 48 goto again
end

, 它会保持循环几分钟(永远不会返回48行),直到我杀死spid。

任何想法都会有所帮助。 感谢

1 个答案:

答案 0 :(得分:0)

如果您返回10或30,则该组合将永远不会是48。

将其更改为:

if @@rowcount >= 48 goto again
尽管如此,我相信你的工作并没有多大意义。 你第二次选择真的有48行吗?