我有一個訂單MySQL的多個順序設置
ORDER BY FIND_IN_SET(status, '1,5,3,4,2'), end_date ASC
但我想是狀態1中的任何記錄的查詢被定購END_DATE ASC和END_DATE DESC訂購的狀態2和訂購的人end_date ASC。
可以這樣做嗎?謝謝
我有一個訂單MySQL的多個順序設置
ORDER BY FIND_IN_SET(status, '1,5,3,4,2'), end_date ASC
但我想是狀態1中的任何記錄的查詢被定購END_DATE ASC和END_DATE DESC訂購的狀態2和訂購的人end_date ASC。
可以這樣做嗎?謝謝
嘗試此查詢 -
SELECT * FROM table_name
ORDER BY
IF(status < 2, status, 3),
IF(status = 2, TO_DAYS(end_date) * -1, TO_DAYS(end_date))
使用2個查詢來獲得您的不同種類,然後獲得聯合查詢。
SELECT * FROM (
(SELECT * FROM table WHERE status!=2
ORDER BY FIND_IN_SET(status, '1,5,3,4'), end_date ASC)
UNION
(SELECT * FROM table WHERE status=2 ORDER BY end_date DESC)
) AS table_sort ORDER BY FIND_IN_SET(status, '1,5,3,4,2')
既然你想要的狀態2個記錄最後,在技術上你不會需要選擇在UNION和ORDER,但我補充說,如果你想要一個不同的排序順序。
煉油Devart的答案...
SELECT * FROM table_name
ORDER BY find_in_set(status, '1,5,3,4,2')
CASE
WHEN (status = 2) then TO_DAYS(end_date) * -1
ELSE TO_DAYS(end_date)
END
我會給一個走了不久。我以前有2個單獨的查詢,但我已經添加了分頁,因此需要它們是單個查詢字符串。謝謝 – puks1978