Postgresql
首先按某些列舉值排序
我有一張像這樣的桌子:
╔═══╦════════════════════╦═════════════╗ ║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
屬性,所以 feorder 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