首页 > 解决方案 > 如何使用 postgresql 对字符串进行自定义排序顺序的查询?

问题描述

我有一个表incidentstatus它是一个字符串。

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

状态可以是以下之一:inProgress, completed,canceled

我希望能够有一种自定义的排序。让客户指定排序顺序。不过,我对查询本身有问题。

我尝试了几件事:

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,但我不确定我做错了什么。

标签: sqlpostgresqlsorting

解决方案


检查正确的sintaxis的文档。并且文本使用单引号。双引号用于字段名

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

推荐阅读