我想优先考虑状态部分。未报告的所有内容都应首先出现。不论日期。但是现在,它会在日期之后订购所有东西。我如何确定第一个案例“未报告部分”的优先级?列表的其余部分应该出现在日期之后。
SELECT * FROM list
ORDER BY date DESC,
CASE
WHEN `bookings`.`status` = 'Not repported' THEN 1
WHEN day= 'Monday' THEN 2
WHEN day= 'Tuesday' THEN 3
WHEN day= 'Wednesday' THEN 4
WHEN day= 'Thursdau' THEN 5
WHEN day= 'Friday' THEN 6
WHEN day= 'Saturday' THEN 7 WHEN
day= 'Sunday' THEN 8 END ASC
limit 1,20 ";
我想要这样的东西。
------------------------------
DATE----DAY-------STATUS------
2011---Monday-----Not reported
2015---Sunday-----Not reported
2010---Wednedday--Not reported
2016---Monday---------Reported
2015---Monday---------Reported
2014---Tuesday--------Reported
2013---Sunday---------Reported
------------------------------
最佳答案
您有两个订单报表。一个用于日期,一个用于您的预订状态。 mysql会先按照你的第一个order语句来排序,然后再根据你的第二个order语句。因此,切换订单语句可以解决您的问题。此外,在 mysql 中还有用于“CASE”的“ELSE”关键字。
总的来说我会这样写:
SELECT *
FROM list
ORDER BY
CASE
WHEN `bookings`.`status` = 'Not repported' THEN 1
ELSE 2
END ASC,
date DESC
LIMIT 1,20
(我不太确定你的“预订”表现在来自哪里,但我把它留在那里了。你可能会错过一个 JOIN 子句)
关于mysql - mysql中的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44423959/