我正在使用 Slick 1,我必须能够在查询中应用过滤器以查找与相关表中的条件匹配的所有实体。
这个使用 Slick 文档的示例显示了我正在尝试做的事情(这是一个与我的情况接近的人为示例)。
在这里,我想要西海岸供应商提供的所有咖啡。我只想要咖啡,我只对导航到供应商以应用过滤器感兴趣:
val westCoast = Seq("CA", "OR", "WA")
val implicitInnerJoin = for {
c <- Coffees
s <- Suppliers if c.supID === s.id && s.state inSet westCoast
} yield c
这可以正常工作,但如果 Suppliers 表中有多个匹配项,它将复制 Coffees。
明显的解决方法是在普通 SQL 中执行 SELECT DISTINCT; 但是,我在这里找不到这样做的方法。
理论上你可以做一个:
query.list.distinct
结果已经返回后;但是,我还实现了 PAGING 支持,因此一旦从数据库中返回结果,您就不想处理结果。这是分页支持:
query.drop(offset).take(limit).list
所以,简而言之,我需要一种方法来在我的查询中指定 SELECT DISTINCT。
有人有想法么?