2011-04-11 76 views
11

當我執行如SELECT col1, col2, col3 FROM table這樣的查詢時,它會按照主鍵升序進行排序。SQL Server中是否有「按列排序」?

我只是想知道是否有方法來指定不同的列,如ORDER BY CreatedDate DESC如果沒有Order By子句?

我懷疑它(因爲這將是非常直觀的,但只是想反正。

回答

24

號你看到任何排序是查詢優化戰略的一個假象。關係理論禁止有任何數據集的任何隱含的順序。

你甚至不能指望下一次對同一個查詢進行相同的排序,因爲優化器策略取決於上下文和d這可能會改變。

+3

有趣的是,關係理論確實指出'一個集合是唯一的,非重複項目的無序集合。 – 2011-04-11 23:40:37

12

即使你看到(通過PK訂購)不是由標準保證的。你應該總是指定要秩序的行爲要檢索的東西。

+3

但是,只有在重要的情況下,這可能不是真的。 – dkretz 2011-04-11 23:20:20

+0

@le dorfier - 這是正確的,如果你不關心訂單,那麼沒有理由使用ORDER BY子句。 – 2011-04-11 23:22:19