我有许多查询,它们会返回各种表中某个主题的一些统计数据。结果包括“分类”,即 {"C","P","M"} 之一。我希望查询按 {"M","P","C"} 顺序返回行,即它不是按字母顺序排列的,也没有任何内置排序规则。
数据无关紧要,但假设我想按这些分类查询骑师的击球率之类的数据,并按这些代码的顺序对结果进行排序。我希望这有意义吗?
那么,有没有办法创建一个可以帮助我的 Postgresql 排序规则,或者还有其他方法吗?请注意,有很多查询,因此复杂的 CASE 子句不是我的首选解决方案,因为我必须将其放在每个查询中(在每个可能甚至包含其自己的查询作为文字的程序中)。
A
CASE WHEN
不应该那么复杂:笔记:
ELSE 9
当存在除“M”、“P”或“C”之外的其他值时才需要。但也可以不使用
CASE WHEN
语句,而是使用ENUM:注意:最好将此字段的列类型更改为
mpc
,以便可以在索引中使用。这应该可以加快排序速度。参见:DBFIDDLE
您可以使用明确的规则创建 ICU 排序规则:
该功能从 PostgreSQL v16 开始可用。