在MySQL中排序多个字段

10 mysql sorting field

我有一个包含2个字段DATE和IMPORTANCE的表.现在我想在DESCENDING ORDER中对这两个字段进行排序,以便按每天的IMPORTANCE排序行.例如,如果排序正确,行应该返回如下:

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
Run Code Online (Sandbox Code Playgroud)

有一种有效的方法只用一个查询语句来完成这个吗?

Tru*_*oft 28

SELECT * FROM yourtable
ORDER BY `DATE` DESC, `IMPORTANCE` DESC
Run Code Online (Sandbox Code Playgroud)

  • @Frank,DATE是一个关键字,在某些情况下,如果您使用特殊单词命名列,则您的查询可能会出错.`\``逃脱它. (5认同)
  • 不,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 (3认同)
  • @Frank根据我自己的经验,反引号字符可以作为mysql中字段名称的引号标记,当​​你有一个包含空格的字段名称时很方便.as:`从yourtable中选择你的名字`对我来说不起作用,但是从yourtable`中选择\`你的名字``. (2认同)

Art*_*sen 6

您可以根据需要向ORDER BY添加任意数量的字段.

那就像是:

SELECT * FROM table ORDER BY `date` DESC, `importance` DESC
Run Code Online (Sandbox Code Playgroud)