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

时间:2011-05-26 07:24:10

标签: sql-server-2005

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

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

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

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

请帮忙,

非常感谢, Byfour

1 个答案:

答案 0 :(得分:5)

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

但即使使用相同的数据,没有ORDER BY子句,结果通常也会按聚簇索引顺序返回,但这是保证。

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