2015-03-25 32 views
1

我正在頁面大小爲5000的非常大的結果集中進行分頁,並按最近更新的日期時間進行排序。我還選擇所有記錄的最後更新時間少於操作的開始時間。通過具有相同值的值進行排序時定義的SQL行爲

一切工作正常,但我偶爾會看到多於一次的記錄。我想知道當有序列共享相同的值時定義的行爲是什麼。

例如,如果我按列X排序,並且三行對於該列的值爲5。這些值總是使用相同的順序按表達式在相同的順序?

+2

根據[這篇文章](http://stackoverflow.com/questions/14058045/how-does-order-by-clause-works-if-two-values-are-equal)SQL標準沒有指定值是否總是以相同的順序。 – 2015-03-25 03:19:33

回答

2

無法保證始終應用相同的訂單。

如果在ORDER BY中沒有使用列,那麼結果將是隨機的。您可能會觀察到可重複的結果(意味着幾次運行的相同順序),但您不能依賴它始終爲真。您可能需要在ORDER BY中添加另一列以獲得一致的結果。

0

它與主鍵的概念相同。您需要能夠唯一標識數據,因此程序別無選擇,只能以相同的方式返回數據。考慮在您的ORDER BY語句中添加另一列並使用ASCDESC以確保它以相同的方式打印出來。

相關問題