2010-12-11 75 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