2011-05-26 217 views
2

在一臺機器中,我們有一組數據並說我們有一列isValid,其中包含true或false,並且我們還有另一列定義一個組。對於每個組,只能有對於Isvalid列,其中一個值爲true,其餘爲false。相同的查詢在SQL中產生不同的結果

現在,當我們運行基於Group的查詢時,包含Isvalid列的行爲True作爲查詢結果中的第一行,而其餘行包含Isvalid列,這些列爲false。

在這裏我們不使用任何'order by'或'group by',我們只是使用'inner join'和'where'的條件。

問題是在我們的開發服務器和測試服務器上我們得到了預期的查詢結果,但是當它進入活動服務器時(對於所有三個服務器,即開發,測試和實時服務器,數據完全不同,所有這些服務器在相同版本的SQL 2005上運行)時,結果會互換(使用isvalid列的行false作爲查詢結果中的第一行)不知道爲什麼。請提供任何建議?

請幫幫忙,

非常感謝, Byfour

回答

5

明顯的答案是:在測試,開發和實時服務器不同的數據。

但即使使用相同的數據,沒有ORDER BY子句,結果通常以聚簇索引順序返回,但這是而不是保證。

如果您需要特定順序的結果,那麼您的必須使用ORDER BY子句。

+3

100%同意米奇在這裏。沒有ORDER BY,那麼訂單不能保證。期。碎片化,旋轉掃描很少出現ORDER BY無法保證順序的情況。 http://msdn.microsoft.com/en-us/library/ms191475.aspx – 2011-05-26 07:31:44

相關問題