Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql按字段和使用当前日期排序_Mysql_Sql Order By - Fatal编程技术网

mysql按字段和使用当前日期排序

mysql按字段和使用当前日期排序,mysql,sql-order-by,Mysql,Sql Order By,我有一张桌子 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查询,以按我想要的字段排序 se

我有一张桌子

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将在2014年1月9日之前处于顶部,然后它将与其他已关闭订单一起降至底部

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  
感谢您的帮助使用此:

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

您可以为此使用大小写表达式,例如

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()

请不要忘记勾选此作为接受答案