2010-09-13 51 views
2

我能做到这一点?:MySQL查询 - ORDER BY

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

你的表中有名为'month'和'day'的列吗?还是你想要从日期字段中解析出这些列? – Asaph 2010-09-13 15:13:54

+0

我有colums日月(数值) – Samuel 2010-09-13 15:34:16

回答

4

是(假设你已经在你的表数据列名为monthday

难道你不希望

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

关系吗?

编辑

其实只是用

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

除非我失去了一些东西?

+0

实际上是:D或高于31的任何数字 – Samuel 2010-09-13 15:15:29

2

您可以在查询结果的任何列的顺序。如果你可以在SELECT这样的即时准备好的信息,那么你可以ORDER BY它。

1

如果你在你的表列称为monthday,那么你应该让你的查询一些改变,它会工作:

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

我删除引号从您的列名,并增加你的月乘以一个数量级,以确保在月和日的数字大于或等于10时正确排序。另外,我更正了拼写为ORDER的拼写错误。

  • 您的查询将不会正确地排序按年(不知道这是否事项您的使用情况)。
  • 由于ORDER条款的动态性质,您的查询将在大型数据集上执行缓慢。考虑使用单个日期列并在其上创建索引。