我有3場 「任務」 表:MySQL中的條件排序?
- 日期
- 優先級(0,1,2)
- 完成(0,1)
什麼我想實現與整個表按完成標誌排序,未完成的任務應按優先級排序,而完成的任務應按日期排序:
- 從任務順序選擇*由ASC
- 做過如果按優先級遞減
- 做= 0額外訂單,如果按日期倒序
做= 1只還爲了是否有可能做到這一點在MySQL沒有工會?
謝謝。
我有3場 「任務」 表:MySQL中的條件排序?
什麼我想實現與整個表按完成標誌排序,未完成的任務應按優先級排序,而完成的任務應按日期排序:
做= 1只還爲了是否有可能做到這一點在MySQL沒有工會?
謝謝。
你可以嘗試ORDER BY (done asc, aux desc)
其中輔助計算與CASE
,以基於對done
值或者優先級或日期(您可能需要將它們轉換成同一類型,以適應在同一個表達式,如施放日期一個合適的整數天數)。
例如:
SELECT * FROM tab
ORDER BY done desc,
case done
when 0 then prio
else to_days(thedate)
end desc;
從亞歷克斯·馬爾泰利兩者只是縮短一點與IF()和固定的ASC/DESC訂購
SELECT * FROM tab
ORDER BY done ASC, IF(done, to_days(thedate), prio) DESC;
謝謝,這工作(即使沒有TO_DAYS) – serg 2009-07-05 16:53:53