2010-12-11 77 views
8

我有一個帶有2個字段DATE和IMPORTANCE的表。現在我想在DESCENDING ORDER中對這兩個字段進行排序,以便按每個日期的IMPORTANCE對行進行排序。例如,如果分類正確,行應該返回這樣的:在MySQL中排序多個字段

Dec 3, 2010 - 10 
Dec 3, 2010 - 10 
Dec 3, 2010 - 8 
Dec 3, 2010 - 7 
Dec 3, 2010 - 3 
Dec 3, 2010 - 1 

Dec 2, 2010 - 10 
Dec 2, 2010 - 9 
Dec 2, 2010 - 3 

Dec 1, 2010 - 8 
Dec 1, 2010 - 5 
Dec 1, 2010 - 5 
Dec 1, 2010 - 4 

有隻有一個查詢語句實現這個的高效方式?

回答

25
SELECT * FROM yourtable 
ORDER BY `DATE` DESC, `IMPORTANCE` DESC 
+5

@Frank,日期是一個關鍵詞,並在某些情況下,如果你的名字有特殊字的專欄,你的查詢可能有錯誤。 ''''逃脫它。 – 2010-12-11 13:40:49

+3

不,DATE不是關鍵字,'不是ANSI SQL標準的一部分。使用雙引號「來轉義對象名,MySQL也知道雙引號,它被稱爲ANSI_QUOTES。查看http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html和http:// dev。 mysql.com/doc/refman/5.5/en/server-sql-mode.html#sqlmode_ansi_quotes – 2010-12-11 14:11:12

+1

ANSI_QUOTES不是Mysql的標準行爲,並且使其能夠改變分隔字符串所需的語法,因此很可能會破壞大部分軟件開發爲Mysql – tacone 2014-07-20 18:44:39

5

其實你可以簡單地添加儘可能多的字段ORDER BY只要你想。

這會是這樣的:

SELECT * FROM table ORDER BY date DESC, importance DESC