如何建立一個SQL查詢,將Col A作為主要排序鍵,但如果Col A為空,則使用Col B作為主要排序鍵?
P粉052724364
P粉052724364 2023-09-15 22:59:52
0
1
677

使用MariaDB,我有一個視圖,提供包含事件日期和是否接受邀請的資訊。 eventdate 是類型為 date 的事件日期。 accepted 是類型為 tinyint 的字段,如果邀請被拒絕,則為0,如果邀請被接受,則為1,否則預設為NULL

我想開發一個查詢,按照acceptedeventdate 排序,這樣我的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

P粉052724364
P粉052724364

全部回覆(1)
P粉242126786

一種方法是使用CASE條件排序結果

SELECT * 
FROM  invite_view 
ORDER BY CASE WHEN accepted IS NULL THEN accepted
              ELSE eventDate
         END

結果:

id eventname eventdate accepted
1 Event 1 2022-04-14 null
#2 Event 2 2022-04-25 null
#3 Event 3 2022-03-28 0
5 Event 5 2022-04-14 1
6 Event 6 2022-05-01 1
4 Event 4 2022-05-03 0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板