2014-08-30 1 views
-1

У меня есть таблицаMySQL упорядочить по полю и используя текущую дату

Id ordertype orderdate 
1 open   09/01/2014   
2 pending  09/01/2014   
3 open   09/30/2014   
4 closed  06/01/2014   
5 closed  9/15/20143   

Я создал запрос MySQL для заказа по полю, которое я хочу.

select * from table order by FIELD(ordertype, 'pending', 'open', 'closed'), orderdate 

, который будет сортировать таблицу выше по

Id ordertype orderdate  
2 pending  09/01/2014 
3 open   09/30/2014 
1 open   09/01/2014   
5 closed  09/01/2014  
4 closed  06/01/2014 

в ожидании первой, второй открыт и закрыт в нижней части.

НО, что бы я хотел сделать, так это то, что положить закрытое сверху на основе сегодняшней даты. Значение ID # 5 будет сверху до 09/01/2014, после чего оно будет снижаться до остальных закрытых заказов.

Id ordertype orderdate  
5 closed  09/01/2014 
2 pending  09/01/2014 
3 open   09/30/2014 
1 open   09/01/2014   
4 closed  06/01/2014 

Спасибо за любую помощь

ответ

0

использовать это:

select * from table order by FIELD(ordertype, 'pending', 'open', 'closed'), orderdate, orderdate desc 
0

Вы можете использовать выражение случай для этого, например,

select * 
from table1 
order by 
     case when ordertype = 'closed' and orderdate > curdate() then 0 else 1 end 
    , FIELD(ordertype, 'pending', 'open', 'closed') 
    , orderdate 

нб: не был уверен, что, если вам нужно> CURDATE() или> = CURDATE()

+0

Этот пример работает отлично !!!! – user3389848

+0

не забудьте пометить это как принятый ответ, пожалуйста –

Смежные вопросы