[英]sqlalchemy filter by count column
我有一个用户查询,它按每个用户的订单数量(ordersCount)进行过滤。
User.query.filter('ordersCount>2')
如果我运行它,它会说:“'where 子句'中的未知列'ordersCount'”
根据我的经验,我应该在此类操作中使用,因为 mysql 不允许它用于不属于表的字段,但如果我使用而不是过滤器运行它,我会得到:
(1054, "Unknown column 'ordersCount' in 'having clause'") 'SELECT count(1) AS count_1 \nFROM user \nHAVING ordersCount > 2' ()
那么如何过滤 sqlalchemy 中的计数列?
请参阅Ordering、Grouping、Limiting、Offset...ing的文档。 根据提供的示例代码并假设您的订单存储在orders
表中,您的版本将类似于:
>>> s = select([orders.c.user_id, func.count(orders.c.id)]).\
... group_by(orders.c.user_id).having(func.count(orders.c.id) > 2)
通过这种方式,您将获得相关用户的user_id
。 如果要检索User
对象,只需将s
关于子查询,然后将您的User
查询与此子查询连接以检索相关用途。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.