2011-04-13 37 views
0

選擇我運行下面的查詢時:SQL2000:列的默認順序從syscolumns中

select syscolumns.name 
from syscolumns,sysobjects 
where 
syscolumns.id = sysobjects.id and 
sysobjects.name='TABLE_NAME' 

可能是什麼,在一個系統中的列按字母順序返回,並在另一個,他們在返回的原因列添加到表的順序?

我知道我不應該依靠默認的順序,我應該使用ORDER BY,但我想知道爲什麼這樣。整理?

謝謝!

+5

有**沒有默認的順序** - 你看到什麼是預期的 - 基於任何數量的影響因素,返回的行順序可能因案例而異。這可能與SQL Server從中讀取數據的頁面排列方式有關,或許多其他因素 - 如果您需要訂單,請使用「ORDER BY」索取 - 這確實是知道 – 2011-04-13 05:24:21

+0

@marc_s:you應該讓這個答案 – 2011-04-13 08:39:41

回答

2

沒有默認順序,你可以「依靠」 - 除非你明確指定ORDER BY

你所看到的是預期的行爲;基於任意數量的影響因素,返回的行的順序可能因案例而異,從服務器到服務器。

這可能與SQL Server從磁盤讀取頁面的安排或許多其他因素有關。

簡而言之:如果您需要訂購需要訂購,您可以通過ORDER BY索取 - 這真是所有人都知道的。

+0

謝謝。 我明白,我只是不明白爲什麼一些特定的機器總是按字母順序返回結果。 – andydev 2011-04-13 22:14:53