MySQL中的条件排序?

我有3个字段的“任务”表:

>约会
>优先级(0,1,2)
>完成(0,1)

我想要实现的是整个表按完成标记排序,未完成的任务应按优先级排序,而完成的任务应按日期排序:

>通过完成asc从任务顺序中选择*
>如果完成= 0,则按优先级desc排序
>如果完成= 1另外按日期desc排序

没有工会可以在MySQL中执行此操作吗?

谢谢.

最佳答案
您可以尝试ORDER BY(完成asc,aux desc),其中使用CASE计算aux以根据done值生成优先级或日期(您可能必须将它们转换为相同的类型以适合相同的表达式,例如将日期转换为合适的整数天数).

例如:

SELECT * FROM tab
ORDER BY done desc,
         case done
             when 0 then prio 
             else to_days(thedate)
         end desc;

转载注明原文:MySQL中的条件排序? - 代码日志