2010-12-05 97 views
1

是否有可能修改下面的查询:需要与MySQL查询帮助

SELECT * 
FROM t1  
ORDER BY CASE 
    WHEN projects_status = 'active' THEN 1 
    WHEN projects_status = 'expired' THEN 2 
    WHEN projects_status = 'closed' THEN 3 
    END 

有下面的排序顺序结果:

  • 活动projects_status ASC
  • 过期projects_status DESC
  • 已关闭projects_status DESC
+1

你能举一个预期结果的例子吗? – 2010-12-05 16:51:48

回答

1

比较将返回一个0或1,其中0通常在1之前排序。因此,当您说ASC时,您可能希望它返回上面为真(1)的行。所以你需要在这种情况下使用DESC。

ORDER BY 
projects_status = 'active' DESC, 
projects_status = 'expired' ASC, 
projects_status = 'closed' ASC 
+0

它似乎没有做我所需要的... – santa 2010-12-05 23:29:14