2010-09-13 50 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條款的動態性質,您的查詢將在大型數據集上執行緩慢。考慮使用單個日期列並在其上創建索引。