我有包含 3 个字段的“任务”表:
- date
- 优先级(0,1,2)
- 完成 (0,1)
我想要实现的是整个表按完成标志排序,未完成的任务应按优先级排序,而已完成的任务应按日期排序:
- 从任务顺序中选择 * 按完成 asc
- 如果done=0则另外按优先级desc排序
- 如果完成=1 另外按日期 desc 排序
是否可以在没有联合的情况下在 MySQL 中执行此操作?
Thanks.
你可以尝试ORDER BY (done asc, aux desc)
其中 aux 是用 a 计算的CASE
根据以下值产生优先级或日期done
(您可能必须将它们转换为相同的类型以适应相同的表达式,例如将日期转换为合适的整数天数)。
例如:
SELECT * FROM tab
ORDER BY done desc,
case done
when 0 then prio
else to_days(thedate)
end desc;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)