postgresql - 关于如何使用 Case-When 执行自定义排序的 Play-Slick 说明

标签 postgresql scala playframework slick slick-3.0

我们的项目需要自定义排序。在深入研究网络后,我想到了以下 SQL 语句。

SELECT CountryName 
FROM   dbo.Country 
ORDER BY CASE WHEN CountryName = 'INDIA' THEN '1'
              WHEN CountryName = 'CHINA' THEN '2'
              ELSE CountryName END ASC

谁能帮我把这个放到 Slick 中?

我已经有这种查询了

contriesQuery.map(_.CountryName)
.sortBy(c => {
    val srt = {
       Case If(x.CountryName = "India") Then 1 
       Case If(x.CountryName = "China") Then 2
       Case Else CountryName  
    }
    srt.asc
})
.result

但它总是向我显示错误 org.postgresql.util.PSQLException:错误:SELECT ORDER BY 表达式必须出现在选择列表中

最佳答案

我已经根据您的方法创建了一个查询,并且它按预期工作。我在 PostgreSQL 中使用 slick 3。

我认为正确的语法是

Case If(...) Then ... If(...) Then ... If(...) Then ... Else ...

为了更好的阅读,你可以这样写:

案例 .如果(...).那么(...) .如果(...).那么(...) .如果(...).那么(...) 。别的(...) .asc

问候!

关于postgresql - 关于如何使用 Case-When 执行自定义排序的 Play-Slick 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182357/

相关文章:

mysql - SQL View 中需要额外的行

postgresql - SQL 查询错误 : The query failed to parse. HResult 异常:0x80040E14

java - Akka Actor系统TestActorRef - 试图理解TestActorRef的含义[T < : Actor]

scala - 如何使用 Play Silhouette 实现无状态 cookie 身份验证?

Scala 2.13 迁移

playframework - Reload后在WebSocket Iteratee中 Play Morphia MappingException

sql - 我如何在 sequelize 中编写这个 Raw Postgres 查询

postgresql - Ruby 1.9.2 + Rails 3.0.3 + postgresql + Windows Vista

scala - Akka-Http 2.4.9 抛出 java.lang.NoClassDefFoundError : akka/actor/ActorRefFactory exception

scala f 有界类型解释