代码之家  ›  专栏  ›  技术社区  ›  SirRupertIII

如何使用postgresql在字符串上使用自定义排序顺序对查询进行排序?

  •  0
  • SirRupertIII  · 技术社区  · 6 年前

    incident 那有一个 status 那是一根绳子。

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

    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 在我所有的尝试中。

    有价值 地位 ,但我不确定我做错了什么。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Juan Carlos Oropeza    6 年前

    检查 documentation 对于右轴。和文本使用单引号。双引号用于字段名

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