gpt4 book ai didi

mysql - 如何在 Slick 2 中的连接表上使用字段和计数 (*) 进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:32 25 4
gpt4 key购买 nike

我正在尝试按一个字段和联合查询的计数对我的查询进行排序。那是我的 SQL:

SELECT * FROM stmt s 
LEFT JOIN rctn r ON s.id = r.stmt_id
GROUP BY s.id
ORDER BY (s.time + INTERVAL 1*COUNT(r.stmt_id) DAY) DESC

我已经有了

stmts.where(_.orgid === orgId)
.innerJoin(rctns).on(_.id === _.stmtId)
.groupBy(_._1.id)

,但我不知道如何进行排序。

有什么想法吗?

最佳答案

非常像 Scala 集合:

stmts.filter(_.orgid === orgId)
.innerJoin(rctns).on(_.id === _.stmtId)
.groupBy(_._1.id)
.sortBy{ case (s_id,group) =>
group.map(_._1.time).max + interval(
group.map(_._2.stmtId).length,
"DAY"
)
}

.max 是一个 hack,因为我们目前不支持 .head,您必须在 Scala 集合中使用它。请注意,interval 不会随 Slick 一起提供,您必须使用 SimpleExpression 构造自己定义它,请参阅 http://slick.typesafe.com/doc/2.0.2/userdefined.html#scala-database-functions .

请注意,过去我们在 Slick 中使用 group by 的错误多于其他操作。 SQL 使用了很多类型技巧(标识符在集合和标量值之间更改类型等),这些技巧很难正确映射到 Scala 语义。我们所知道的事情现在是固定的。如果您遇到生成无效 SQL 的情况,请报告允许我们重现该问题的错误。

关于mysql - 如何在 Slick 2 中的连接表上使用字段和计数 (*) 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413630/

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