我正在尝试使用 sequelize 获得不同的计数,例如
'SELECT COUNT(DISTINCT(age)) AS `count` FROM `Persons` AS `Person`'
Run Code Online (Sandbox Code Playgroud)
只要我使用原始查询,我就会得到想要的结果。但是,一旦我更改为 sequelize count 函数,Postgres 中的查询就会中断:
Person.count({distinct:'age'}).then(...);
Run Code Online (Sandbox Code Playgroud)
结果
'SELECT COUNT(DISTINCT(*)) AS `count` FROM `Persons` AS `Person`'
Run Code Online (Sandbox Code Playgroud)
这会导致语法错误。不同帖子中描述的解决方案,例如如何使用 sequelize 获得不同的计数?不工作,除非您添加一个包含语句或一个 where 子句,而我在这种特殊情况下没有。
有没有人知道一个合适的解决方案?
我用来sequelize查询数据库sqlserver。我有两张桌子:
data: columns - id, name, team, type
history:columns - id, node, date, status, data_id(foreignkey)
Run Code Online (Sandbox Code Playgroud)
和一个关系
history.belongsTo(data, {foreignKey: 'data_id'}
data.hasMany(history, {foreignKey: 'data_id'})
我的查询是:
dataModel.findAll({
attributes: ['name'],
include: [{
model:historyModel
}]
})
Run Code Online (Sandbox Code Playgroud)
我的结果如下所示:
[
{
name: "1",
history: [
{
...
}
]
},
{
name: "2",
history: [
{
...
}
]
}
]`
Run Code Online (Sandbox Code Playgroud)
我希望不是历史数组,而是每个数组中的历史对象的数量。中的查询sql是:
select data.name, count(history.data_id) count
from history
inner join data on data.id=history.data_id
group by history.data_id, data.name
Run Code Online (Sandbox Code Playgroud)