2011-09-04 89 views
1

我有一個包含「創建日期」字段的項目表,並且我試圖找出一種方法來訂購它們,以便項目在過去兩週內創建的項目首先出現,並且在過去兩週內未創建的項目出現在此之後,按字母順序排序。MySQL將日期範圍排序到開頭,然後按其他條件排序所有其他條件

我知道如何做到這一點與多個SQL查詢,但我寧願不這樣做,如果可能的話。是否有可能做到這一點?

回答

3
select * from table 
order by 
case when date_created > curdate() - interval 2 week then 1 else 2 end,item 

修訂ANSWER

(select * from table 
where date_created > curdate() - interval 2 week 
order by date_created desc limit 0,10000000000) 
union all 
(select * from table 
where date_created < curdate() - interval 2 week 
order by item 
limit 0,10000000000) 

LIMIT的使用是必要的時候,你必須同時應用ASC和DESC聯盟內部排序。

+0

很好,謝謝! – Jake

+0

其實,我需要添加什麼來排序第一部分?就像我想在創建日期之前對2周的日期範圍內的項目進行排序一樣。 – Jake

+0

我已經更新了我的答案。 –