我试图编写一个Slick查询来查找" max"组中的元素,然后根据该结果继续查询,但是当我尝试我认为显而易见的方式时,我遇到了大量错误:
val articlesByUniqueLink = for {
(link, groupedArticles) <- historicArticles.groupBy(_.link)
latestPerLink <- groupedArticles.sortBy(_.pubDate.desc).take(1)
} yield latestPerLink
由于这似乎不起作用,我想知道是否还有其他方法可以找到&#34;最新的&#34;元素&#34;分组文章&#34;上面,假设这些来自带有pubDate时间戳的Article表和可以复制的链接。我有效地寻找HAVING articles.pub_date = max(articles.pub_date)
。
表达它的另一种等效方式产生相同的结果:
val articlesByUniqueLink = for {
(link, groupedArticles) <- historicArticles.groupBy(_.link)
latestPerLink <- groupedArticles.filter(_.pubDate === groupedArticles.map(_.pubDate).max.get)
} yield latestPerLink
[SlickTreeException:在解析monadic连接+ 50行Slick节点树后无法访问s2。
答案 0 :(得分:1)
在Slick中,我发现每个组的最大,最小或其他最佳方法是对分组结果使用自连接:
val articlesByUniqueLink = for {
(article, _) <- historicArticles join historicArticles.groupBy(_.link)
.map({case (link, group) => (link, group.map(_.pubDate).max)})
on ((article, tuple) => article.link === tuple._1 &&
article.pubDate === tuple._2)
} yield article
如果有可能产生具有on
条件的重复项,只需在其后放下this之类的重复项。