我一直试图让它工作一段时间,并希望获得一些见解。目标:我正在尝试根据他们目前拥有的喜欢数量对帖子进行排序。当前的:const posts = await db.post.findAll({ include: [ db.user, { model: db.like_post, where: { user_id: user }, required: false } ], where: { category }, group: [ [ sequelize.col('like_posts.post_id') ] ], order: [ [ sequelize.fn('count', sequelize.col('like_posts.post_id')), 'DESC' ] ]});我目前收到的错误是:"message": "column \"post.id\" must appear in the GROUP BY clause or be used in an aggregate function",为了获得正确的帖子顺序,有人对我可能做错了什么有任何建议吗?再次感谢所有的帮助和提示。
1 回答
哔哔one
TA贡献1854条经验 获得超8个赞
因为您使用聚合函数,所以count
在 SELECT 和 FROM 之间列出的所有其他字段都应该在 GROUP BY 中列出。如果您只想post
按相关记录的计数进行排序like_post
并保留所有字段post
以及包含的字段,user
您应该在选项中使用原始子查询order
。
是这样的:
order: [[sequelize.literal('(select count(*) from like_post where like_post.post_id=post.id)', 'DESC']
添加回答
举报
0/150
提交
取消