如何使用Postgresql对字符串进行自定义排序的查询排序?

时间:2018-12-01 06:25:30

标签: sql postgresql sorting

我有一个表incident,表status是一个字符串。

我想使用自定义排序顺序查询所有事件。

状态可以是以下之一:inProgresscompletedcanceled

我希望能够有一种自定义的排序方式。让客户端指定排序顺序。我在查询本身有问题。

我尝试了一些事情:

SELECT * 
FROM incident as i 
ORDER BY array_position(array["inProgress", "completed", "canceled"], i.status)

SELECT * 
FROM incident as i 
ORDER BY case when status = "inProgress" then 0
         case when status = "completed" then 1
         case when status = "canceled" then 2
              else 3

我的所有尝试都收到错误Unhandled rejection SequelizeDatabaseError: column "inProgress" does not exist

我期望inProgress的值为status,但是我不确定自己做错了什么。

1 个答案:

答案 0 :(得分:2)

检查documentation的正确切线。文本使用单引号。双引号用于字段名称

ORDER BY case 
              when status = 'inProgress' then 0
              when status = 'completed' then 1
              when status = 'canceled' then 2
              else 3
         end