【问题标题】:Sorting multiple fields in MySQL在 MySQL 中对多个字段进行排序
【发布时间】:2011-05-23 22:41:36
【问题描述】:

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

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

有没有一种有效的方法可以只用一个查询语句来完成这项工作?

【问题讨论】:

  • 请不要破坏您的帖子。通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(在 CC BY-SA 3.0 license 下)。根据 SE 政策,任何破坏行为都将被撤销。

标签: mysql sorting field


【解决方案1】:
SELECT * FROM yourtable
ORDER BY `DATE` DESC, `IMPORTANCE` DESC

【讨论】:

  • @Frank,DATE 是一个关键字,在某些情况下,如果您使用特殊字词命名列,您的查询可能会出错。 ` 转义它。
  • 不,DATE 不是关键字,` 不是 ANSI SQL 标准的一部分。使用双引号 " 来转义对象名,MySQL 也知道双引号,它被称为 ANSI_QUOTES。检查 dev.mysql.com/doc/refman/5.5/en/reserved-words.htmldev.mysql.com/doc/refman/5.5/en/…
  • ANSI_QUOTES 不是 Mysql 的标准行为,启用它会改变分隔文字字符串所需的语法,因此很可能会破坏为 Mysql 开发的大部分软件。
  • @Frank 以我自己的经验,反引号字符确实可以作为 mysql 中字段名称的引号标记,当​​您有一个包含空格的字段名称时,这很方便。如:Select your name from yourtable 不适合我,但Select `your name` from yourtable 可以。
【解决方案2】:

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

应该是这样的:

SELECT * FROM table ORDER BY `date` DESC, `importance` DESC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 2012-03-04
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    相关资源
    最近更新 更多