相同的查询在SQL中产生不同的结果

bal*_*dai 2 sql-server-2005

在一台机器中,我们有一组数据,并说我们有一个包含true或false的列isValid,我们还有另一列定义了一个组.对于每个组,只有一个值为Isvalid列为true,其余为假的.

现在,当我们运行查询时,基于Group,包含Isvalid列为True的行将作为查询结果中的第一行,其余行包含Isvalid列,这些行为false.

在这里,我们不使用任何'order by'或'group by',我们只使用'inner join'和'where'条件.

问题出在我们的开发服务器和测试服务器上,我们得到了预期的查询结果,但是当它进入实时服务器时(对于所有三个服务器,即开发,测试和实时服务器,数据完全不同,所有这些服务器都在同一版本上运行SQL 2005),结果互换(带有无效列的行false作为查询结果的第一行)不知道为什么.有什么建议吗?

请帮忙,

非常感谢,Byfour

Mit*_*eat 5

显而易见的答案是:测试,开发和实时服务器上的不同数据.

但即使使用相同的数据,没有ORDER BY子句,结果通常以聚簇索引顺序返回,但这不能保证.

如果您需要特定排序的结果,那么您必须使用一个ORDER BY 子句.

  • 100%同意米奇在这里.没有ORDER BY,那么订单不能保证.期.碎片化,Merry go round扫描是少数情况下为什么订单无法保证没有ORDER BY.http://msdn.microsoft.com/en-us/library/ms191475.aspx (3认同)