2013-03-22 29 views
1

列類型字符。其他列的SQL ORDER BY行爲?

COLUMN 1  COLUMN 2 
    1x    A 
    1x    B 
    2x    A 
    2x    B 
    3x    A 
    3x    B 

ORDER BY COLUMN2結果:

COLUMN 1  COLUMN 2 
    1x    A 
    2x    A 
    3x    A 
    1x    B 
    2x    B 
    3x    B 

是這種形式的數據,它出現在第一列也進行排序,實際上是我在尋找的結果; (按已排序的第二列進行排序,在第一列排序)

首先,這種行爲是否有保證?

接下來,如果是這樣,SQL規範說明了這種行爲?

最後,這是達到預期結果的正確方法嗎?

謝謝。

+0

您是否閱讀過ORDER BY條款的[documentation](http://msdn.microsoft.com/zh-cn/library/ms188385.aspx)?它解釋了按多列進行排序時的行爲,並說明如果沒有'ORDER BY',返回的行的順序* *不能保證。 – Pondlife 2013-03-22 17:26:30

+0

@Pondlife:刪除了sql-server標籤,沒有專門使用該標籤。 – 2013-03-22 17:28:06

回答

6

不,不能保證。爲了保證這一點,你可以做這樣的事情:

select COL1, COL2 from YOURTABLE order by col2, col1 

這告訴你的數據庫中COL2責令其先,然後如果這些都是一樣的,進一步的命令它(打破僵局,可以這麼說)由在COL1上訂購。你可以擁有儘可能多的這些。

+1

真棒,感謝您的解釋。 – 2013-03-22 17:25:37

+1

@Tommy是的。我已更新我的帖子,以便更清楚地瞭解這一點。 – Todd 2013-03-22 17:26:16

+2

@TommYy:是的。嘗試不同的組合,例如'ORDER BY col2,col1 DESC'或'ORDER BY col2 DESC,col1'來看看它是如何工作的。 – 2013-03-22 17:26:56