使用P计算联接表

2024-10-02 12:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Peewee ORM编写查询。查询应返回至少有一条与之关联的消息的所有用户名。我目前尝试如下:

usersWithAtLeastOneMessage = User.select().where((fn.Count(User.messages) > 0)
for u in usersWithAtLeastOneMessage: 
    print u.name

我的模型是这样的:

^{pr2}$

但是,这给了我以下错误:OperationalError: misuse of aggregate function Count()。在

不过,我完全迷路了。我知道该怎么解决?欢迎所有提示!在


Tags: namein消息forcountormwhereselect
2条回答

如果要按聚合过滤,则需要

a)添加一个有效的group_by()子句

b)在having()子句中进行过滤

就像在

User.select().group_by(User).having((fn.Count(User.messages) > 0)

尝试使用下面的语句,它应该能满足您的需要。在

User.select().where(fn.Exists(Message.select().where(Message.user == User.id)))

相关问题 更多 >

    热门问题