MySQL查询 - ORDER BY

时间:2010-09-13 15:10:48

标签: sql mysql

我可以这样做吗?:

SELECT * FROM calendar ORDER BY ((month * 31) + day)

3 个答案:

答案 0 :(得分:4)

是(假设您的表格中有数字列monthday

你不想要吗

SELECT * FROM calendar ORDER BY ((`month` * 31) + `day`)

虽然?

修改

实际上只是使用

SELECT * FROM calendar ORDER BY `month`, `day`

除非我遗漏了什么?

答案 1 :(得分:2)

您可以按查询结果中的任意列进行排序。如果你可以SELECT这样的即时准备信息,那么你可以ORDER BY

答案 2 :(得分:1)

如果表格中有monthday列,那么您应该对查询进行一些更改,它会起作用:

SELECT * FROM calendar ORDER BY ((month * 100) + day)

我从列名中删除了引号,并将月份乘数增加了一个数量级,以确保对月份和日期数大于或等于10的正确排序。另外,我更正了拼写中的拼写错误{ {1}}。

<强> BUT

  • 您的查询将无法按年份正确排序(不确定在您的用例中是否重要)。
  • 由于ORDER by子句的动态特性,您的查询将在大型数据集上执行缓慢。考虑使用单个日期列并在其上创建索引。