gpt4 book ai didi

sql - 从 Slick 3.x 中的分组依据中按列选取最大项目

转载 作者:行者123 更新时间:2023-11-29 11:36:51 25 4
gpt4 key购买 nike

我正在尝试编写一个 Slick 查询来查找组中的“最大”元素,然后根据该结果继续查询,但是当我尝试我认为是显而易见的方法时,我遇到了一个巨大的错误:

val articlesByUniqueLink = for {
(link, groupedArticles) <- historicArticles.groupBy(_.link)
latestPerLink <- groupedArticles.sortBy(_.pubDate.desc).take(1)
} yield latestPerLink

因为这似乎不起作用,我想知道是否有其他方法可以从上面的“groupedArticles”中找到“最新”元素,假设这些来自带有 pubDate 时间戳和链接的文章表可以复制。我正在有效地寻找 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 连接后无法访问对 s2 的引用 + 50 行 Slick 节点树。

最佳答案

我发现在 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之后。

关于sql - 从 Slick 3.x 中的分组依据中按列选取最大项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com