关于如何使用 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
此致!
我们的项目需要自定义排序。在潜入网络后,我想出了以下 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
此致!