我有3个字段的"任务"表:
我想要实现的是整个表按完成标记排序,未完成的任务应按优先级排序,而完成的任务应按日期排序:
没有工会可以在MySQL中执行此操作吗?
谢谢.
Ale*_*lli 13
您可以尝试ORDER BY (done asc, aux desc)使用a计算aux的位置,CASE以根据值生成优先级或日期done(您可能必须将它们转换为相同的类型以适合相同的表达式,例如将日期转换为合适的整数天数).
例如:
SELECT * FROM tab
ORDER BY done desc,
case done
when 0 then prio
else to_days(thedate)
end desc;
Run Code Online (Sandbox Code Playgroud)
取自Alex Martelli,用IF()缩短了一点,修复了ASC/DESC的排序
SELECT * FROM tab
ORDER BY done ASC, IF(done, to_days(thedate), prio) DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |