Scala, Quill - 如何在 quill 查询中使用 SQL IN 子句?
Scala, Quill - how to use SQL IN clause in quill query?
我有一个数据库,模型如下:
case class Data {
id: Int,
value: Json
}
我想创建搜索查询,它可以通过 csv
:
从 value
JSON 中过滤一些字段
def search(id: Int) = {
....
val list = List("value1", "value2", "value3")
quote(
myTable.filter( t => t.id == lift(id)))
.dynamic
.filter(_ => liftQuery(list).contains(infix""" t.name """.pure.as[Boolean]))
}
问题是它不能正常工作。我不知道如何以其他方式在这里使用 IN
子句。
value
是一个 JSON,其中包含字段 name
,现在我想搜索 myTable
中适合传入 list
的值的所有元素。
我也试过做类似的事情:
infix""" t.name in ${list.mkString(",")} """.pure.as[Boolean]
但是也没用。你能帮我解决一些问题吗? quill 文档中没有 IN
子句的好例子。
quote(query[Data].filter(d => liftQuery(list).contains(infix"value->>'name'")))
结果:
SELECT d.id, d.value FROM data d WHERE value->>'name' IN (?, ?, ?)
我有一个数据库,模型如下:
case class Data {
id: Int,
value: Json
}
我想创建搜索查询,它可以通过 csv
:
value
JSON 中过滤一些字段
def search(id: Int) = {
....
val list = List("value1", "value2", "value3")
quote(
myTable.filter( t => t.id == lift(id)))
.dynamic
.filter(_ => liftQuery(list).contains(infix""" t.name """.pure.as[Boolean]))
}
问题是它不能正常工作。我不知道如何以其他方式在这里使用 IN
子句。
value
是一个 JSON,其中包含字段 name
,现在我想搜索 myTable
中适合传入 list
的值的所有元素。
我也试过做类似的事情:
infix""" t.name in ${list.mkString(",")} """.pure.as[Boolean]
但是也没用。你能帮我解决一些问题吗? quill 文档中没有 IN
子句的好例子。
quote(query[Data].filter(d => liftQuery(list).contains(infix"value->>'name'")))
结果:
SELECT d.id, d.value FROM data d WHERE value->>'name' IN (?, ?, ?)