Orm Sequelize select with aggregate包含错误属性=>;错误
模型是具有M:1关系的Orm Sequelize select with aggregate包含错误属性=>;错误,orm,inner-join,sequelize.js,Orm,Inner Join,Sequelize.js,模型是具有M:1关系的Person和Team 失败的查询: db.Person.findAll({ attributes: [ [sequelize.fn('COUNT', sequelize.col('*')), 'count']], include: [{model: db.Team, required: true}], // to force inner join group: ['team.team_id'] }).complete(function(er
Person
和Team
失败的查询:
db.Person.findAll({
attributes: [ [sequelize.fn('COUNT', sequelize.col('*')), 'count']],
include: [{model: db.Team, required: true}], // to force inner join
group: ['team.team_id']
}).complete(function(err, data) {
...
});
生成的SQL是:
SELECT "person"."person_id",
COUNT(*) AS "count",
"team"."team_id" AS "team.team_id",
"team"."team_name" AS "team.team_name",
"team"."team_email" AS "team.team_email",
"team"."team_lead" AS "team.team_lead"
FROM "person" AS "person" INNER JOIN "team" AS "team"
ON "person"."team_id" = "team"."team_id"
GROUP BY "team"."team_id";
显然,包含在SELECT
子句中的person.person\u id
把它搞砸了,Postgres正确地抱怨:
ERROR: column "person.person_id" must appear in the `GROUP BY` clause or be used in an aggregate function
似乎考虑了attributes
选项,因为COUNT
显示正确,但是默认情况下添加了SELECT
子句中的所有其余列
除了属性
)之外,是否还有其他方法可以明确定义哪些列出现在选择
子句中,或者这是一个错误
我正在使用Sequelize v2.0.3。Sequelize将始终将主键添加到所选字段。目前没有办法禁用该功能 也许按照此处的建议在
个人id
上添加DISTINCT可以解决此问题
否则,请在sequelize bug tracker上随意打开一个问题这已经是几年前的问题了,是否仍然存在“sequelize将始终将主键添加到所选字段”,并且没有解决方法?