使用MariaDB,我有一个视图,提供包括事件日期和是否接受邀请的信息。 eventdate 是类型为 date 的事件日期。 accepted 是类型为 tinyint 的字段,如果邀请被拒绝,则为0,如果邀请被接受,则为1,否则默认为NULL。
我想开发一个查询,按照 accepted 和 eventdate 排序,这样我的NULL值将出现在eventdate顺序的最前面。然而,如果accepted不为NULL,则希望按照eventdate排序。
我的当前查询是:
从邀请视图中选择* ORDER BY已接受,eventdate
然而,这个查询将表格排序,使得所有accepted = NULL的值在前面,所有0值在其后,最后所有1值在最后,如下所示:
eventname | eventdate | accepted --------------------------------- Event 1 | 2022-04-14 | NULL Event 2 | 2022-04-25 | NULL Event 3 | 2022-03-28 | 0 Event 4 | 2022-05-03 | 0 Event 5 | 2022-04-14 | 1 Event 6 | 2022-05-01 | 1
我希望得到类似这样的结果:
eventname | eventdate | accepted --------------------------------- Event 1 | 2022-04-14 | NULL Event 2 | 2022-04-25 | NULL Event 3 | 2022-03-28 | 0 Event 5 | 2022-04-14 | 1 Event 6 | 2022-05-01 | 1 Event 4 | 2022-05-03 | 0
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
一种方法是使用CASE条件排序结果
SELECT * FROM invite_view ORDER BY CASE WHEN accepted IS NULL THEN accepted ELSE eventDate END结果: