我尝试用sequelize做groupwise最大值,但除了原始查询之外找不到任何解决方案。
例如,我有一个1:m的关联。 symbols
表在company_key_statistics
表中有很多行。 company_key_statistics
的列createdAt
是时间戳,表示何时创建了行。我需要将最新的symbols
加入company_key_statistics
,但我只需要最新的company_key_statistics
。例如,我需要获取ORCL
和MSFT
个符号,并且只能获取最新的company_key_statistics
。
我想知道是否有可能使用sequelize内置方法来做这些事情,或者只是原始查询?
更新
我问了同样的this问题,但对于普通的MySQL,也许基于这个问题,有人可以回答如何处理续集。 提前谢谢!
答案 0 :(得分:1)
在我的选项中!我认为这会给你一些帮助
sql.findAll({
attributes: [
[sqldb.sequelize.fn('MAX', sqldb.sequelize.col('price')), "max"]
],
group: [
"key"
],
order: [
"key"
],
})
答案 1 :(得分:0)
这两种方式都有可能
var models = require('./database/models'); //path to your models
var user = require('./database/models').user; //path to your user models
user.findAll(
{group: 'age',
order: [
[models.sequelize.fn('max', models.sequelize.col('age')), 'DESC'],
// will return max(`age`) DESC and will groupby age
]
}
).then(function(result)
{
res.json(result)
})
了解更多详情