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

Play-Slick Instruction on How to Perform Custom Sorting using Case-When

我们的项目需要自定义排序。在潜入网络后,我想出了以下 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 表达式必须出现在 select 列表中

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

我认为正确的语法是

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

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

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

此致!