gpt4 book ai didi

mysql - 如何在 sequelize 中按聚合函数排序

转载 作者:可可西里 更新时间:2023-11-01 07:08:05 26 4
gpt4 key购买 nike

在将我的旧 PHP 应用程序功能转换为 Node 和 Sequelize 时,我感觉好像碰壁了。也许我正在接近 ORM 可以做的事情的极限,但在我放弃之前只想问问。

让我们想象三个表:VideoTaskPublishDate

应用要求一个Video可能有多个PublishDate和多个TaskTask 的截止日期将通过查看 VideoPublishDate 中的最小值来计算。

因此,如果一个Video 有两个PublishDate 2015-12-012015-08-15,我们将使用 2015-08-15 并对其执行额外的计算以获得 Task 截止日期。

当我试图获取按计算出的截止日期排序的 Task 列表时,问题就出现了。

我尝试过许多不同的方法。最新的尝试尝试使用sequelize.fn函数

models.Task.findAll({
where: {isActive: false, isCompleted: false},
include: [
{
model: models.Video,
attributes: [[sequelize.fn('min', 'video.publishDates.date'), 'dueDate']],
include: [models.PublishDate]
}
],
order: [['video', 'dueDate', 'ASC']],
limit: 50
})

我并不鼓励我朝着正确的方向前进,因为即使没有 order 子句,这种尝试也只会返回一条记录。尽管如此,这仍然是我一整天最接近的感觉,我遗漏了一些使这成为可能的信息或语法。

这是我第一次涉足 ORM 世界,所以如果我遗漏了一些简单的东西,我深表歉意。我尽了最大努力在 Google 上查看文档和其他问题,但到目前为止还没有成功。

最佳答案

您需要使用该功能进行订购。你应该尝试:

order : [['video','ASC'],[sequelize.fn('min', 'video.publishDates.date'), 'ASC']]

关于mysql - 如何在 sequelize 中按聚合函数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30816886/

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