Postgresql

首先按某些列舉值排序

  • August 26, 2020

我有一張像這樣的桌子:

╔═══╦════════════════════╦═════════════╗
║ID ║ type (enum)        ║ updated_at  ║
╠═══╬════════════════════╬═════════════╣
║ 1 ║ friend_request     ║ <date_time> ║
║ 2 ║ new_article        ║ <date_time> ║
║ 3 ║ article_read       ║ <date_time> ║
║ 4 ║ article_invitation ║ <date_time> ║
╚═══╩════════════════════╩═════════════╝

我想按列舉類型的值對檢索到的結果進行排序。

具有值friend_request和列article_invitation的記錄type應該首先出現,然後是其餘的。所有東西都應該由 訂購updated_at DESC

現在,我知道我可以連結多個order by屬性,所以 fe

order by type desc, updated_at desc

將按價值為我排序,type結果按updated_at價值排序。但是如何為列的某些type指定?這甚至可能嗎?

您可以使用 CASE 表達式:

order by case "type"
           when 'article_invitation' then 1
           when 'new_article' then 2
           when 'article_read' then 3
           when 'friend_request' then 4
        end, 
        updated_at desc

引用自:https://dba.stackexchange.com/questions/274386