mysql - mysql中的优先级

标签 mysql list case

我想优先考虑状态部分。未报告的所有内容都应首先出现。不论日期。但是现在,它会在日期之后订购所有东西。我如何确定第一个案例“未报告部分”的优先级?列表的其余部分应该出现在日期之后。

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/

相关文章:

list - 获取Grails列表中的第一个元素

MySQL 使用别名进行大小写切换

php - LAMP UTF-8 错误地保存到 MySQL 数据库

mysql - Laravel where 子句与 DATEDIFF()

c++ - 析构函数中的段错误

java - Java中队列链表中的递归toString

java - 菜单与开关的问题。当我输入我的选择时,它适用于所有 mu 开关

sql - Oracle SQL - CASE When 任何记录的条件

Mysql计数时得到零值

mysql - 给定一个字符串,找到该字符串以该值开头的行