sequelize查询关联数据,可以禁止查询关联表的主键吗?
TableA.findAll({
attributes: ["state", [fn("SUM", col("change")), "change"]],
where: {
state: [0, 1],
},
group: ["state", col("TableB.productId")],
include: [{
model: TableB,
attributes: ["productId"],
where: {
productId: [42, 41],
},
}],
});
得到以下sql语句
SELECT `TableA`.`state`, SUM(`change`) AS `change`, `TableB`.`id` AS `TableB.id`, `TableB`.`productId` AS `TableB.productId`
FROM `TableA` AS `TableA` INNER JOIN `TableB` AS `TableB` ON `TableA`.`relateId` = `TableB`.`orderId` AND `TableB`.`productId` IN (42, 41)
WHERE `TableA`.`state` IN (0, 1)
GROUP BY `state`, `TableB`.`productId`;
报错:this is incompatible with sql_mode=only_full_group_by
报错原因:select的参数中包含了: TableB.id AS TableB.id
,而这个不是聚合数据,不允许查询。
不想用的解决方案1:其实我只要改一下数据库的设置,允许查询就好了。
但是我又不是很想改数据库设置,其实这条语句只要把 TableB.id AS TableB.id
删掉就可以了,问题是,这个是sequelize自己加的,请问怎样可以让它不加这个?
不能用的解决方案2:把 include 中的 attributes 设为空数组也行,但是我一定要查TableB.productId
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论