如何将 `inSet` 与列元组一起使用?
How to use `inSet` with tuple of columns?
在Slick中,我们可以对单个列使用inSet
来执行sql IN
子句。但是我不知道如何将它与一对列一起使用。
PostgresQL 允许 IN
的以下用法:
select * from table where (table.a, table.b) in ( values
(1, 'foo'),
(2, 'bar')
)
我以为我可以在 slick 中执行以下操作,但它无法编译:
TableQuery[Table].filter(
row => (row.a, row.b) inSet Seq(
(1, "foo"),
(2, "bar"))
)
有可能实现吗?
现在您可以手动完成,编写如下内容:
val expectedTuples = Seq(
(1, "foo"),
(2, "bar"),
(3, "baz")
)
TableQuery[Table].filter(
row =>
expectedTuples.map{
case(fst, snd) => row.a === fst && row.b === snd
}.reduce(_ || _)
)
这在 slick 中是已知的 feature request。
在Slick中,我们可以对单个列使用inSet
来执行sql IN
子句。但是我不知道如何将它与一对列一起使用。
PostgresQL 允许 IN
的以下用法:
select * from table where (table.a, table.b) in ( values
(1, 'foo'),
(2, 'bar')
)
我以为我可以在 slick 中执行以下操作,但它无法编译:
TableQuery[Table].filter(
row => (row.a, row.b) inSet Seq(
(1, "foo"),
(2, "bar"))
)
有可能实现吗?
现在您可以手动完成,编写如下内容:
val expectedTuples = Seq(
(1, "foo"),
(2, "bar"),
(3, "baz")
)
TableQuery[Table].filter(
row =>
expectedTuples.map{
case(fst, snd) => row.a === fst && row.b === snd
}.reduce(_ || _)
)
这在 slick 中是已知的 feature request。