2014-08-29 115 views
0

在mssql_query中,您可以使用類似SELECT * FROM table ORDER BY value1 DESC, value2 DESC的查詢。我無法使用pdo sqlsrv執行此操作。pdo sqlsrv按多列排序

通過多列對查詢結果進行排序的正確方法是什麼?

的樣本數據

|----------------------------------------| 
| id   value1  value2 | 
|----------------------------------------| 
| 4    119   21  | 
| 2    115   17  | 
| 1    114   10  | 
| 3    104   21  | 
|----------------------------------------| 

目前他們在4,2,1,3的順序,但它們應該是4,2,3,1

+1

爲什麼「我無法用pdo sqlsrv做到這一點」?你得到任何錯誤?如果是,請將其添加到您的問題。 – Jens 2014-08-29 21:37:24

+0

沒有錯誤。感覺就像第二個值2 DESC完全被忽略。 – ibab 2014-08-29 21:50:17

+0

你可以顯示樣本數據嗎? – Jens 2014-08-29 21:51:12

回答

1

當你排序,在第一次排序後完成的任何排序僅在value1具有兩個相同值時影響排序。我創建了一個SQL Fiddle來顯示排序如何影響數據的順序。

編輯:我創建了一個second fiddle(與第一個結果相結合),它顯示了第一個排序列中不同值的結果在第二個排序列中有沒有影響。

編輯2:這是fiddle,做OP的工作。它將作業級別從16分配到23,並將它們賦值爲2,而其他所有級別的值都爲1.然後在字符級別進行排序,然後如果2個字符具有基於作業級別排序的相同級別。 sqlsrv格式化小提琴可以是found here

+0

謝謝。這完全按照通緝。 – ibab 2014-08-29 22:37:21