簡體   English   中英

如果滿足條件,則按其他字段排序MySQL

[英]MySQL Order By different field if condition is met

我有一張桌子,上面放着一些活動,其中一些是音樂會,里面有timestamp列。 有些是測驗,由於它們是重復發生的事件,因此沒有設置時間戳,但是我稱日期和時間為另外兩列。

我需要一個選擇來在TIME(timestamp) asc之后排序該表,除非當event_type = 'quiz'time ,則它應該按列time排序。

僅需要考慮“小時:分鍾”部分,而不需要考慮當天。

我該怎么做呢? 請參閱下面的示例表:

title      event_type timestamp           day       time
concert_1  music      2015-02-09 18:00:00
quiz_1     quiz       0000-00-00 00:00:00 Monday    16:30
concert_2  music      2015-02-10 19:00:00
quiz_2     quiz       0000-00-00 00:00:00 Tuesday   14:00

結果應為:

title      event_type timestamp           day       time
quiz_2     quiz       0000-00-00 00:00:00 Tuesday   14:00
quiz_1     quiz       0000-00-00 00:00:00 Monday    16:30
concert_1  music      2015-02-09 18:00:00
concert_2  music      2015-02-10 19:00:00

使用條件表達式返回一個或另一個。

例如:

 ORDER BY IF(t.event_type='quiz',t.time,TIME(t.timestamp))

MySQL IF()函數將第一個參數評估為布爾值; 如果結果為TRUE,則返回第二個參數,否則返回第三個參數。

符合ANSI標准

ORDER BY CASE WHEN t.event_type = 'quiz' THEN t.time ELSE TIME(t.timestamp) END

假定將time列聲明為TIME數據類型,並將timestamp列聲明為DATETIMETIMESTAMP數據類型。 如果不是這種情況,那么我們希望以規范格式返回返回相同數據類型的表達式,以便可以對其進行正確排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM