光滑的电梯嵌入sql'或'等效

时间:2014-02-13 08:56:06

标签: scala slick

   val Users = TableQuery[User] 
   Users.filter(_.age === 18 or _.age is null)

如何用光滑实现上述查询?

预期的SQL

select * from user where age = 18 or age is null

3 个答案:

答案 0 :(得分:2)

我不确定基于过滤器的查询,但For Comprehension将为您提供您正在寻找的内容:

val forCol = for {
  u <- Users if u.username === "Damiya" || u.username === "OtherDamiya"
} yield u

假设用户的标准表定义

,将生成以下查询
select x2."id", x2."username", x2."first_name", x2."last_name", x2."email",  x2."password" 
from "users" x2 
where (x2."username" = 'Damiya') or (x2."username" = 'OtherDamiya')

我发现for-comprehensions是使用光滑的最简单方法,因为你可以轻松地利用连接等等。

希望有所帮助!

答案 1 :(得分:1)

Slick尽可能使用Scala语法。使用||代替or

答案 2 :(得分:1)

 val Users = TableQuery[User] 
 Users.filter(m => ((m.age is 18) || (m.age isNull)))